在Azure上使用MapR持久應(yīng)用程序客戶(hù)端容器部署MSSQL

MapR持久應(yīng)用程序客戶(hù)端容器 (PACCs) 通過(guò)為容器提供從任何地方持久的數(shù)據(jù)訪問(wèn)來(lái)支持現(xiàn)有和新的應(yīng)用程序的集裝箱化。為了連接到MapR服務(wù),特地建造了PACCs。它們?cè)谌萜骷?jí)別提供安全的身份驗(yàn)證和連接,為應(yīng)用程序?qū)犹峁┛蓴U(kuò)展的支持,并且可以在Docker Hub中進(jìn)行定制和發(fā)布。
適用于Linux的Microsoft SQL Server 2017提供了在Linux環(huán)境中運(yùn)行MSSQL的靈活性。像所有RDBM一樣,它也需要一個(gè)強(qiáng)大的存儲(chǔ)平臺(tái)來(lái)堅(jiān)持?jǐn)?shù)據(jù)庫(kù)的安全管理和保護(hù)。
通過(guò)將MSSQL與MapR PACC集成,客戶(hù)可以將MSSQL,MapR和Docker的所有優(yōu)點(diǎn)結(jié)合在一起。在這里,MSSQL提供強(qiáng)大的RDBM服務(wù),將數(shù)據(jù)保存到MapR中,用于災(zāi)難恢復(fù)和數(shù)據(jù)保護(hù),同時(shí)利用Docker技術(shù)實(shí)現(xiàn)可擴(kuò)展性和敏捷性。下圖顯示了我們演示的架構(gòu):
一個(gè)MapR Cluster
在部署容器之前,您需要一個(gè)MapR Cluster來(lái)保存數(shù)據(jù)。有多種方式可以部署MapR Cluster。您可以使用沙箱,也可以使用MapR安裝程序進(jìn)行本地或云部署。在Azure上部署MapR的最簡(jiǎn)單方法是通過(guò)MapR Azure Marketplace。一旦你注冊(cè)了Azure,購(gòu)買(mǎi)一個(gè)擁有足夠配額的訂閱,比如CPU核心和存儲(chǔ),然后填寫(xiě)一個(gè)表單來(lái)回答關(guān)于基礎(chǔ)設(shè)施和MapR的一些基本問(wèn)題,然后點(diǎn)擊一個(gè)按鈕就離開(kāi)你。完全部署的MapR集群應(yīng)該在20分鐘內(nèi)觸手可及。
Docker CE / EE運(yùn)行的VM
其次,您需要在MapR集群所在的同一個(gè)VNet或子網(wǎng)中啟動(dòng)一個(gè)虛擬機(jī)。 Docker CE / EE是必需的。. Docker支持多種操作系統(tǒng)平臺(tái)。 我們使用CentOS進(jìn)行演示。
一旦你運(yùn)行MapR Cluster和虛擬機(jī),你可以啟動(dòng)你的容器部署。
第一步 -建立一個(gè)Docker鏡像
以root身份登錄到您的VM并運(yùn)行以下命令:
curl -L https://raw.githubusercontent.com/jsunmapr/pacc-mssql/master/build | bash
幾分鐘后,你會(huì)看到類(lèi)似的消息,表明構(gòu)建成功了:

執(zhí)行以下命令以驗(yàn)證映像(mapr-azure / pacc-mssql:latest)確實(shí)存儲(chǔ)在本地Docker存儲(chǔ)庫(kù)中:

第二步 –為MSSQL創(chuàng)建一個(gè)卷
在啟動(dòng)容器之前,您需要在MapR集群上創(chuàng)建一個(gè)卷來(lái)保存數(shù)據(jù)庫(kù)。以“mapr”用戶(hù)的身份登錄MapR,運(yùn)行以下命令創(chuàng)建一個(gè)卷,例如安裝在文件系統(tǒng)的path / vol1上的vol1:
maprcli volume create –path /vol1 –name vol1
您可以通過(guò)執(zhí)行以下命令獲取群集名稱(chēng):
maprcli dashboard info -json | grep name
第三步 –啟動(dòng)容器
運(yùn)行以下命令以使用上面步驟1中創(chuàng)建的映像啟動(dòng)容器:
# docker run --rm --name pacc-mssql -it \
--cap-add SYS_ADMIN \
--cap-add SYS_RESOURCE \
--device /dev/fuse \
--security-opt apparmor:unconfined \
--memory 0 \
--network=bridge \
-e ACCEPT_EULA=Y \
-e SA_PASSWORD=m@prr0cks \
-e MAPR_CLUSTER=mapr522 \
-e MSSQL_BASE_DIR=/mapr/mapr522/vol1 \
-e MAPR_CLDB_HOSTS=172.31.35.153 \
-e MAPR_MOUNT_PATH=/mapr \
-e MAPR_TZ=Etc/UTC \
-e MAPR_CONTAINER_USER=root \
-e MAPR_CONTAINER_UID=0 \
-e MAPR_CONTAINER_GROUP=root \
-e MAPR_CONTAINER_GID=0 \
-p 1433:1433 \
mapr-azure/pacc-mssql:latest
請(qǐng)注意,您可以在第一行中將-it替換為-d,以使啟動(dòng)進(jìn)程在后臺(tái)運(yùn)行。
您可以自定義以上紅色的環(huán)境變量以適應(yīng)您的環(huán)境。變量SA_PASSWORD是MSSQL管理員用戶(hù)。 MAPR_CLUSTER是集群名稱(chēng)。 MSSQL_BASE_DIR是MSSQL將保存其數(shù)據(jù)的MapR-XD的路徑。路徑通常采用/mapr/名稱(chēng)>/名稱(chēng)>.的形式。 MAPR_CLDB_HOSTS是MapR集群中的cldb主機(jī)的IP地址。在我們的案例中,我們只有一個(gè)節(jié)點(diǎn)Cluster,所以只有一個(gè)IP被使用。最后,默認(rèn)的MSSQL端口是1433。您可以使用Docker中的-poption將其公開(kāi)到VM主機(jī)上您選擇的端口。 我們?cè)谘菔局羞x擇了相同的端口1433。
還有其他環(huán)境變量可以傳遞給MapR PACC。
幾分鐘后,您應(yīng)該看到如下所示的消息,表示MSSQL服務(wù)器已準(zhǔn)備就緒:
2017-11-16 22:54:30.49 spid19s SQL Server is now ready for client connections. This is an informational message; no user action is required.
第四步 –在MSSQL中創(chuàng)建一個(gè)表并插入一些數(shù)據(jù)
現(xiàn)在您已準(zhǔn)備好將一些示例數(shù)據(jù)插入到測(cè)試MSSQL數(shù)據(jù)庫(kù)中。為此,通過(guò)發(fā)出以下命令找到正在運(yùn)行的MSSQL容器的容器ID:

然后使用docker exec命令登錄到容器:

然后發(fā)出下面的命令,通過(guò)在啟動(dòng)容器時(shí)提供管理密碼進(jìn)入MSSQL提示符,如上面的步驟3所示:

發(fā)出以下SQL語(yǔ)句來(lái)填充測(cè)試數(shù)據(jù)庫(kù)中的清單表,然后查詢(xún)?cè)摫恚?/span>

成功! 這意味著數(shù)據(jù)庫(kù)已被保存到MapR卷中,現(xiàn)在由MapR-XD存儲(chǔ)進(jìn)行管理和保護(hù)。您可以通過(guò)在容器中發(fā)出此命令來(lái)驗(yàn)證,MSSQL日志和數(shù)據(jù)目錄在vol1中顯示:

第五步 –銷(xiāo)毀當(dāng)前容器并重新啟動(dòng)新容器并訪問(wèn)現(xiàn)有表
現(xiàn)在讓我們銷(xiāo)毀當(dāng)前容器,通過(guò)發(fā)出以下命令來(lái)模擬服務(wù)器中斷:
# docker rm –f c2e69e75b181
重復(fù)上述步驟3啟動(dòng)一個(gè)新的容器。 登錄到容器并在新容器啟動(dòng)并運(yùn)行時(shí)立即查詢(xún)相同的清單表:

松了口氣,你看到以前輸入的數(shù)據(jù)仍然存在,這要?dú)w功于MapR!
第六步 –把它擴(kuò)大到超越
憑借集裝箱技術(shù)的專(zhuān)業(yè)知識(shí),一次旋轉(zhuǎn)多個(gè)集裝箱非常容易。只需重復(fù)步驟2和3,在MapR中為每個(gè)MSSQL容器分配一個(gè)新卷,然后關(guān)閉。
總結(jié)在這個(gè)博客中,我們演示了如何使用MapR PACC對(duì)MSSQL進(jìn)行容器化,并將其數(shù)據(jù)庫(kù)保存到MapR中以進(jìn)行數(shù)據(jù)保護(hù)和災(zāi)難恢復(fù)。對(duì)于許多其他需要可擴(kuò)展且強(qiáng)大的存儲(chǔ)層的應(yīng)用程序來(lái)說(shuō),MapR PACC是一種很好的方式,可以管理和分發(fā)其數(shù)據(jù)以實(shí)現(xiàn)災(zāi)難恢復(fù)和可伸縮性。 MapR PACC還可以通過(guò)像Kubernetes,Mesos或Docker這樣的協(xié)調(diào)器進(jìn)行管理,以實(shí)現(xiàn)真正的可擴(kuò)展性和高可用性。
京ICP備09015132號(hào)-996 | 違法和不良信息舉報(bào)電話:4006561155
© Copyright 2000-2026 北京哲想軟件有限公司版權(quán)所有 | 地址:北京市海淀區(qū)西三環(huán)北路50號(hào)豪柏大廈C2座11層1105室
北京哲想軟件集團(tuán)旗下網(wǎng)站:哲想軟件 | 哲想動(dòng)畫(huà)