REX-Ray 容器跨主機存儲坑實在是太多,百度搜索出來的各種解決方案很少有實際意義,跟風粘貼複制者衆,大家在學習這些前沿技術時,學會去國外官方論壇上查詢問題。rex-ray作為docker跨主機數據卷存儲解決方案,支持很多存儲模式,例如openstack的cinder,分布式存儲ceph等,但是今天我們用VirtualBox 虛拟機virtualbox來實現容器的跨主機存儲。
步驟一閱讀官方文檔,了解rex-ray究竟是什麼,能夠做什麼,為什麼選用它,它又支持什麼。
官方鍊接 :
https://rexray.readthedocs.io/en/stable/
https://rexray.readthedocs.io/en/stable/user-guide/storage-providers/virtualbox/#virtualbox
步驟二安裝VirtualBox,并啟動一個虛拟機,例如centos7虛拟機。我是直接搜狗搜索VirtualBox,然後默認安裝。安裝centos7虛拟機也很簡單,如果不會可以百度教程。
需要注意的是,安裝虛拟機時,網絡選擇橋接,确保centos7虛拟機可以正常聯網。同時存儲需要删除默認的控制器,選用SATA的控制器,安裝完系統後,請清空其他軟盤設備隻保留你的虛拟機硬盤。細心的讀者已經發現,我的端口數設置為30,這是REX-Ray官方給的推薦配置,隻有擴大端口數你之後創建的卷才能被機器識别使用。
建議直接安裝兩台虛拟機!!!以便等會驗證跨主機存儲。
步驟三
為兩台虛拟機安裝docker和rex-ray。如果你不能保證你的網絡可以與互聯網正常通信,就不用繼續下面的教程了。
我的習慣是禁SELINUX,sed -i "s/^SELINUX=.*/SELINUX=disabled/" /etc/selinux/config
然後安裝docker,yum -y install docker
接下來安裝rexray,curl -sSL https://rexray.io/install | sh -s -- stable
最後編寫/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設置為你啟動VirtualBox的宿主機加18083端口,這是因為你在宿主機上啟動了VirtualBox而虛拟機都是使用橋接網絡,所以ip是宿主機的ip;
volumePath是你的第一台虛拟機的存放位置,我的第一台虛拟機是cjm所以位置是這個;
controllerName:設置SATA類型;
localMachineNameOrId是指定的vm的名字。
這個時候先不要執行 systemctl restart rexray.service
我們需要去cmd中rexray的安裝目錄下執行關閉登錄認證 和 啟動vboxwebsrv 服務
VBoxManage setproperty websrvauthlibrary null vboxwebsrv -H 0.0.0.0
執行完畢之後,我們就可以啟動相關服務了。
systemctl restart rexray systemctl restart docker
步驟四跨主機數據卷測試
現在兩台虛拟機都啟動了docker和rexray服務。我們創建數據卷設備驗證一下:
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
現在我們在第一台虛拟機上創建一個t1的容器,挂載mysqldata設備,并在mysqldata設備上寫一個測試文件1.txt。
然後我們删除t1容器在另外一台虛拟機上創建t2的容器,也挂載mysqldata設備,并查看之前寫的文件是否還存在。
跨主機存儲已經實現,如果你在實現rexray遇到了很多坑,可以一起交流交流。
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!