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

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

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

第二步 –為MSSQL創(chuàng)建一個卷
在啟動容器之前,您需要在MapR集群上創(chuàng)建一個卷來保存數(shù)據(jù)庫。以“mapr”用戶的身份登錄MapR,運(yùn)行以下命令創(chuàng)建一個卷,例如安裝在文件系統(tǒng)的path / vol1上的vol1:
maprcli volume create –path /vol1 –name vol1
您可以通過執(zhí)行以下命令獲取群集名稱:
maprcli dashboard info -json | grep name
第三步 –啟動容器
運(yùn)行以下命令以使用上面步驟1中創(chuà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
請注意,您可以在第一行中將-it替換為-d,以使啟動進(jìn)程在后臺運(yùn)行。
您可以自定義以上紅色的環(huán)境變量以適應(yīng)您的環(huán)境。變量SA_PASSWORD是MSSQL管理員用戶。 MAPR_CLUSTER是集群名稱。 MSSQL_BASE_DIR是MSSQL將保存其數(shù)據(jù)的MapR-XD的路徑。路徑通常采用/mapr/名稱>/名稱>.的形式。 MAPR_CLDB_HOSTS是MapR集群中的cldb主機(jī)的IP地址。在我們的案例中,我們只有一個節(jié)點(diǎn)Cluster,所以只有一個IP被使用。最后,默認(rèn)的MSSQL端口是1433。您可以使用Docker中的-poption將其公開到VM主機(jī)上您選擇的端口。 我們在演示中選擇了相同的端口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)建一個表并插入一些數(shù)據(jù)
現(xiàn)在您已準(zhǔn)備好將一些示例數(shù)據(jù)插入到測試MSSQL數(shù)據(jù)庫中。為此,通過發(fā)出以下命令找到正在運(yùn)行的MSSQL容器的容器ID:

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

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

發(fā)出以下SQL語句來填充測試數(shù)據(jù)庫中的清單表,然后查詢該表:

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

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

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