容器跨主機(jī)存儲(chǔ)入坑指南
入坑準(zhǔn)備
REX-Ray 容器跨主機(jī)存儲(chǔ)坑實(shí)在是太多,百度搜索出來(lái)的各種解決方案很少有實(shí)際意義,跟風(fēng)粘貼復(fù)制者眾,大家在學(xué)習(xí)這些前沿技術(shù)時(shí),學(xué)會(huì)去國(guó)外官方論壇上查詢問(wèn)題。rex-ray作為docker跨主機(jī)數(shù)據(jù)卷存儲(chǔ)解決方案,支持很多存儲(chǔ)模式,例如openstack的cinder,分布式存儲(chǔ)ceph等,但是今天我們用VirtualBox 虛擬機(jī)virtualbox來(lái)實(shí)現(xiàn)容器的跨主機(jī)存儲(chǔ)。
步驟一
閱讀官方文檔,了解rex-ray究竟是什么,能夠做什么,為什么選用它,它又支持什么。
官方鏈接 :
https://rexray.readthedocs.io/en/stable/
https://rexray.readthedocs.io/en/stable/user-guide/storage-providers/virtualbox/#virtualbox
步驟二
安裝VirtualBox,并啟動(dòng)一個(gè)虛擬機(jī),例如centos7虛擬機(jī)。我是直接搜狗搜索VirtualBox,然后默認(rèn)安裝。安裝centos7虛擬機(jī)也很簡(jiǎn)單,如果不會(huì)可以百度教程。
需要注意的是,安裝虛擬機(jī)時(shí),網(wǎng)絡(luò)選擇橋接,確保centos7虛擬機(jī)可以正常聯(lián)網(wǎng)。同時(shí)存儲(chǔ)需要?jiǎng)h除默認(rèn)的控制器,選用SATA的控制器,安裝完系統(tǒng)后,請(qǐng)清空其他軟盤(pán)設(shè)備只保留你的虛擬機(jī)硬盤(pán)。細(xì)心的讀者已經(jīng)發(fā)現(xiàn),我的端口數(shù)設(shè)置為30,這是REX-Ray官方給的推薦配置,只有擴(kuò)大端口數(shù)你之后創(chuàng)建的卷才能被機(jī)器識(shí)別使用。
建議直接安裝兩臺(tái)虛擬機(jī)?。?!以便等會(huì)驗(yàn)證跨主機(jī)存儲(chǔ)。
步驟三
為兩臺(tái)虛擬機(jī)安裝docker和rex-ray。如果你不能保證你的網(wǎng)絡(luò)可以與互聯(lián)網(wǎng)正常通信,就不用繼續(xù)下面的教程了。
我的習(xí)慣是禁selinux,sed -i "s/^SELINUX=.*/SELINUX=disabled/" /etc/selinux/config
然后安裝docker,yum -y install docker
接下來(lái)安裝rexray,curl -sSL https://rexray.io/install | sh -s -- stable
***編寫(xiě)/etc/rexray/config.yml文件
- libstorage:
- service: virtualbox
- virtualbox:
- endpoint: http://172.16.2.214:18083
- userName: root
- password: 123qwe
- tls: false
- volumePath: /Users/cgls/VirtualBox VMs/cjm
- controllerName: SATA
- localMachineNameOrId: cjm
解讀config文件:
service選擇VirtualBox的virtualbox;
endpoint設(shè)置為你啟動(dòng)VirtualBox的宿主機(jī)加18083端口,這是因?yàn)槟阍谒拗鳈C(jī)上啟動(dòng)了VirtualBox而虛擬機(jī)都是使用橋接網(wǎng)絡(luò),所以ip是宿主機(jī)的ip;
volumePath是你的***臺(tái)虛擬機(jī)的存放位置,我的***臺(tái)虛擬機(jī)是cjm所以位置是這個(gè);
controllerName:設(shè)置SATA類型;
localMachineNameOrId是指定的vm的名字。
這個(gè)時(shí)候先不要執(zhí)行 systemctl restart rexray.service
我們需要去cmd中rexray的安裝目錄下執(zhí)行關(guān)閉登錄認(rèn)證 和 啟動(dòng)vboxwebsrv 服務(wù)
- VBoxManage setproperty websrvauthlibrary null
- vboxwebsrv -H 0.0.0.0
執(zhí)行完畢之后,我們就可以啟動(dòng)相關(guān)服務(wù)了。
- systemctl restart rexray
- systemctl restart docker
步驟四
跨主機(jī)數(shù)據(jù)卷測(cè)試
現(xiàn)在兩臺(tái)虛擬機(jī)都啟動(dòng)了docker和rexray服務(wù)。我們創(chuàng)建數(shù)據(jù)卷設(shè)備驗(yàn)證一下:
- docker volume create --driver rexray --name=mysqldata --opt=size=2
- docker volume create --driver rexray --name=mysqldata1 --opt=size=2
- docker volume ls
- rexray volume ls
現(xiàn)在我們?cè)?**臺(tái)虛擬機(jī)上創(chuàng)建一個(gè)t1的容器,掛載mysqldata設(shè)備,并在mysqldata設(shè)備上寫(xiě)一個(gè)測(cè)試文件1.txt。
然后我們刪除t1容器在另外一臺(tái)虛擬機(jī)上創(chuàng)建t2的容器,也掛載mysqldata設(shè)備,并查看之前寫(xiě)的文件是否還存在。
跨主機(jī)存儲(chǔ)已經(jīng)實(shí)現(xiàn),如果你在實(shí)現(xiàn)rexray遇到了很多坑,可以一起交流交流。