關於ctdb,有太多的想吐槽的地方了。。。我CentOS系統鏡像版本 CentOS1908,應該是最後一版了。
然後 可以再直接安裝的ctdb版本 是ctdb4.9 配置文件語法與之前差了好多,這個不重要的話,每次直接安裝完成後,沒有一次成功啓動過。
然後根據官網指導,源碼安裝Samba 附帶會安裝ctdb。。。這能成也是好事啊。。。好不容易安裝完畢。不能使用systemctl管理。好在有一個 ctdb.service 文件,修改一下後放在 /usr/lib/systemd/system/目錄後 也能使用systemctl啓停,但是,每次重啓也會報錯。 /usr/local/samba/var/lib/ctdb 目錄 已存在一個db數據庫。還要手動刪除纔行。。。這。。。
最後找到了 gluster 提供的Samba+ctdb的rpm包下載地址。儘管版本低了點 4.2.4 也是可以用的。。。滿懷期待安裝完成。
https://download.gluster.org/pub/gluster/glusterfs/samba/CentOS/
終於可以使用 systemctl 啓停 ctdb了。。。好激動,然而,通過這個庫安裝的Samba啓動又會失敗了。。。emmm可能就是版本太低。。。不過 先不使用Samba了,可以試一下ctdb 實現gluster 用戶態高可用。。。(如果想使用這個ctdb4.2,然後安裝Samba4.9的話,安裝時會自動幫你吧ctdb也升級一下。。。然後ctdb就也變成4.9再次啓動失敗。。。)
這可能只是我自己會遇到的問題(配置什麼的可能設置錯誤了才導致這麼坑爹,但是本博客主要是講gluster+ctdb)
首先,安裝ctdb
準備三個Centos主機,我使用的是虛擬機。。。ip分別是
192.168.199.71
192.168.199.72
192.168.199.73
確保三臺主機之間可以相互ping 通
然後三個節點全部執行下面幾步
關閉防火牆
設置 SELINUX爲permissive模式
安裝 wget
yum -y install wget
下載https://download.gluster.org/pub/gluster/glusterfs/samba/CentOS/glusterfs-samba-epel.repo 到 /etc/yum.repos.d/ 目錄
wget -O /etc/yum.repos.d/glusterfs-samba-epel.repo https://download.gluster.org/pub/gluster/glusterfs/samba/CentOS/glusterfs-samba-epel.repo
重新生成緩存
yum makecache
然後就可以安裝 ctdb4.2.4了
4.2.4版本配置文件 是/etc/sysconfig/ctdb
yum -y install ctdb-4.2.4
測試ctdb 基本使用
同樣是三個節點都執行
ctdb什麼也不管理,單純測試是否可用
創建並編輯 nodes文件和 public_address 文件,本來應該是使用gluster掛載一個共享卷,然後設置文件在相應位置建立軟鏈接的,暫時沒安裝gluster,先使用本地文件
vim /etc/ctdb/nodes
192.168.199.71
192.168.199.72
192.168.199.73
vim /etc/ctdb/public_addresses
192.168.199.70/24 ens33
可以看做公共IP地址,是一個虛擬IP沒有對應主機。
修改 ctdb 配置文件 /etc/sysconfig/ctdb
vim /etc/sysconfig/ctdb
把這兩行註釋掉 這個就是使用ctdb管理Samba,但是這個Samba是啓動不了的。。。所以就不管理Samba了
#CTDB_MANAGES_SAMBA=yes
#CTDB_SAMBA_SKIP_SHARE_CHECK=yes
根據日誌文件 創建一個目錄 存放 鎖文件
mkdir -p /gluster/lock
啓動ctdb服務
systemctl start ctdb
然後查看ctdb 狀態 可要等一小會纔會變OK,不過這個ctdb什麼也不管理。
ctdb status
查看公共IP
ctdb ip
這時候,應該只有第一個啓動的節點狀態纔會是 OK 鎖文件不一致。。。這個,所以說要使用glusterfs掛載出一個卷。ctdb日誌
2020/04/07 19:51:15.301292 [set_recmode: 8826]: ERROR: recovery lock file /gluster/lock/lockfile not locked when recovering!
由於暫時未安裝設置glusterfs,但是由於沒有共享鎖,導致 幾個節點的狀態不OK,可以先使用 nfs 掛載出一個共享目錄。做一下測試。
新建一個虛擬機 IP 192.168.199.95
安裝完成後,新增一塊硬盤,掛載上去作爲共享目錄
查看新掛載硬盤。 我的是 /dev/sdb
fidsk -l
格式化新硬盤,這裏不給新硬盤做分區了。
mkfs.ext4 /dev/sdb
新建一個文件夾作爲,硬盤掛載點,同時也作爲nfs共享目錄
mkdir /nfs-share
掛載硬盤 sdb 到 /nfs-share 目錄
echo "/dev/sdb /nfs-share ext4 defaults 0 0" >> /etc/fstab
mount -a
/etc/fstab 目錄是開機執行的文件掛載,mount -a 表示立即執行該文件的內容。
可以使用df命令查看一下成功與否
df -h
根據這幾天學習情況,linux系統應該是自帶nfs內核的,但是應該沒有相應管理工具設置管理。
安裝 nfs-utils
yum -y install nfs-utils
編輯 /etc/exports 文件
vim /etc/exports
/nfs-share *(rw,async,no_root_squash,no_subtree_check)
編輯nfs配置文件
vim /etc/sysconfig/nfs
可以在末尾添加, 也可以取消相應註釋
LOCKD_TCPPORT=32803
LOCKD_UDPPORT=32769
MOUNTD_PORT=892
RQUOTAD_PORT=875
STATD_PORT=662
STATD_OUTGOING_PORT=2020
這些設置的意思是固定nfs服務使用的端口號。除了兩個默認的外,其它使用的端口號如果不指定,每次重啓服務都是隨機的。可以使用配置文件固定下來。。。這樣做如果要使用防火牆添加端口也好添加,如果端口隨機,防火牆開放端口也有點麻煩,,,不過我一般實驗環境防火牆都是關閉狀態。。。
啓動nfs服務
systemctl enable rpcbind
systemctl start rpcbind
systemctl enable nfs
systemctl start nfs
至此,共享的nfs目錄設置完畢,可以在其它三個節點測試一下。下面的也是三個節點都要執行
當然也要安裝nfs-utils 只用安裝,不用設置
yum -y install nfs-utils
查看 nfs 節點共享的目錄
showmount -e 192.168.199.75
掛載該共享目錄到本地 /nfs-share
mkdir /nfs-share
mount -t nfs 192.168.199.75:/nfs-share /nfs-share
三個節點都掛載完成後,
在某一個節點執行 比如192.168.199.71,下面幾步一個節點執行就可以了,因爲在共享目錄下進行。
在共享目錄掛載點創建兩個文件夾,一個作爲鎖共享目錄,一個作爲數據共享目錄
mkdir /nfs-share/lock
mkdir /nfs-share/data
然後在 鎖共享目錄中創建 ctdb 使用到的配置文件,然後再建立軟鏈接,這樣幾個節點的配置文件就是一致的了。
創建 ctdb 文件,注(4.2.4的配置文件是/etc/sysconfig/ctdb之後版本的可能是 /etc/ctdb/ctdbd.conf)
vim /nfs-share/lock/ctdb
CTDB_RECOVERY_LOCK=/nfs-share/lock/lockfile
CTDB_PUBLIC_ADDRESSES=/etc/ctdb/public_addresses
nodes 文件
vim /nfs-share/lock/nodes
192.168.199.71
192.168.199.72
192.168.199.73
創建public_addresses 文件,官方或者其他一些文檔建議,公共IP不必一致,每個節點可以是獨特的設置,這裏並沒有什麼獨特設置,就都設置成一樣的了。 ens33 是網卡名,看個人的可能不一樣
vim /nfs-share/lock/public_addresses
192.168.199.70/24 ens33
配置目錄建立完畢。。。接下來三個節點要刪除之前的配置文件,重新建立軟鏈接。。其實一開始先創建nfs共享目錄要好一些,不過,有個錯誤印象更深一點。。。
三個節點都要執行。
備份 ctdb 服務配置文件
mv /etc/sysconfig/ctdb /etc/sysconfig/ctdb.bak
建立軟鏈接
ln -s /nfs-share/lock/ctdb /etc/sysconfig/ctdb
刪除原配置 nodes 文件和 public_addresses 文件
rm -rf /etc/ctdb/nodes /etc/ctdb/public_addresses
爲這兩個文件建立軟鏈接 指向 /nfs-share/lock 中內容
ln -s /nfs-share/lock/nodes /etc/ctdb/nodes
ln -s /nfs-share/lock/public_addresses /etc/ctdb/public_addresses
三個節點執行完畢 可以重新啓動ctdb服務,然後查看節點狀態,可以設置爲 開機啓動
systemctl enable ctdb
systemctl restart ctdb
過一小段時間 查看ctdb狀態
可以看到ctdb的狀態。三個節點都是OK的。但是之前也說了,這個ctdb什麼都未管理。。。只是測試是否可用。下一步可以測試一下ctdb管理nfs
使用ctdb管理內核態nfs
其實本人也不是很懂內核態nfs的意思,根據他人博客來看,glusterfs也附帶了nfs服務,GlusterFS的服務稱爲用戶態。
由於集羣NAS中所使用的集羣文件系統是GlusterFS,所以關於nfs存在兩種形態,即內核態nfs以及用戶態nfs。其中內核態nfs指Linux,內核自帶的nfs,用戶態nfs指是GlusterFS自帶的nfs服務。注:兩種形態的nfs服務是互斥的。
還沒有安裝GlusterFS,剛纔測試nfs共享目錄時安裝的nfs-utils,就當做是內核態的管理吧。
在/nfs-share/lock/ 目錄中設置nfs 配置文件
vim /nfs-share/lock/nfs
NFS_TICKLE_SHARED_DIRECTORY=/nfs-share/lock/nfs-tickles
NFS_HOSTNAME=nfs-server
STATD_PORT=874
STATD_OUTGOING_PORT=876
MOUNTD_PORT=892
RQUOTAD_PORT=875
LOCKD_UDPPORT=872
LOCKD_TCPPORT=872
STATD_SHARED_DIRECTORY=/nfs-share/lock/nfs-state
STATD_HOSTNAME="$NFS_HOSTNAME -H /etc/ctdb/statd-callout"
RPCNFSDARGS="-N 4"
設置 exports 文件
vim /nfs-share/lock/exports
/nfs-share/data *(rw,fsid=1235)
三個節點都要執行。下面的
備份原文件
mv /etc/sysconfig/nfs /etc/sysconfig/nfs.bak
mv /etc/exports /etc/exports.bak
建立軟鏈接
ln -s /nfs-share/lock/nfs /etc/sysconfig/nfs
ln -s /nfs-share/lock/exports /etc/exports
設置 ctdb 的配置文件 /nfs-share/lock/ctdb
vim /nfs-share/lock/ctdb
添加兩行
CTDB_NFS_SKIP_SHARE_CHECK=yes
CTDB_MANAGES_NFS=yes
表示對ctdb將會控制 nfs服務。
然後設置 nfs 開機不再自啓,並停止nfs服務。本來三個節點也沒有開啓nfs服務,隨便執行一下
systemctl disable nfs
systemctl stop nfs
重新啓動ctdb 服務,等待ctdb 狀態變爲OK
systemctl restart ctdb
ctdb status
ctdb ip
然後,可以查看nfs狀態,發現被ctdb啓動了
systemctl status nfs
Apr 08 10:43:42 node1.ctdb.feng exportfs[36582]: exportfs: /nfs-share/data does not support NFS export
這個也可以理解,畢竟 這個nfs-share 本身就是通過nfs掛載出來的。。。但不能掛載也是可以查看一下的。
這時候可以找一臺安裝過nfs-utils 且可以連通這三個節點的主機,測試一下。。。可以使用作爲nfs共享的主機,但這樣有種套娃的感覺。因爲本來這個nfs-sahre 就是通過nfs掛載的nfs主機的nfs-sahre。。。所以有條件還是換一個主機測試。。。
查看節點IP 的共享
showmount -e 192.168.199.71
查看公共IP
showmount -e 192.168.199.70
公共IP192.168.199.70 可以查看,已經能夠證明ctdb是正常提供服務了
爲了測試一下掛載使用其他目錄作爲共享
三個節點都新建一個共享目錄
mkdir /mnt/nfs-share
修改一下 三個節點 nfs 配置文件
vim /nfs-share/lock/exports
/mnt/nfs-share *(rw,fsid=1235)
重啓ctdb 服務
systemctl restart ctdb
查看三個節點 nfs 服務運行狀態
systemctl status nfs
再次查看 nfs 共享情況
測試掛載192.168.199.71 共享
mkdir /mnt/test-nfs1
mount -t nfs 192.168.199.71:/mnt/nfs-share /mnt/test-nfs1
然後測試一下公共IP 是否可掛載
mkdir /mnt/test-nfs2
mount -t nfs 192.168.199.70:/mnt/nfs-share /mnt/test-nfs2
也是沒有問題查看
df -h
儘管成功了,但是有一些問題。。。ctdb協助實現高可用。當三個節點中的一個掛掉了,公共IP會飄到另一個上面。。。現在狀況是未使用gluster的卷,如果使用gluster的卷掛載到本地,三個節點的內容應當是是一致的。然後是可以通過nfs 掛載的。現在,三個節點共享點都是本地磁盤,內容有可能是不一致的。。。
可以看一看 當前 70 IP到底指向的誰
在 三個節點 的共享目錄分別創建一個 不同的文件
比如 192.168.199.71 節點創建 71文件
cd /mnt/nfs-share/
touch 71
72 節點創建72 文件, 73 節點創建73文件
然後 測試節點進入掛載192.168.199.70的目錄
cd /mnt/test-nfs2
ls
可以看到顯示的 是72, 也就是說我的公共IP現在指向的是72節點。。現在把 72 節點 ctdb停掉
systemctl stop ctdb
再次使用測試節點查看
這裏公共IP已經飄向了71節點。。。證明 ctdb確實是在正常運行的
ctdb的內核態nfs測試就到這裏了。。。一般來說,使用ctdb是希望協助完成高可用工作。要保證數據一致的,這種情況只是一個測試。
接下來我們可以使用 gluster來創建gluster卷掛載到然後使用ctdb管理實現高可用。。。
安裝glusterfs
上面進行了測試後,機器上有ctdb在運行。。。現在爲了接下來的測試,將ctdb 等服務和 掛載的 nfs 節點取消掛載。並把一些設置文件刪掉,掛載點都沒了,軟鏈接現在失效了。。。
停止ctdb 服務
systemctl stop ctdb
移除掛載
umount /nfs-share/
刪除軟鏈接配置文件
rm -rf /etc/exports /etc/ctdb/nodes /etc/ctdb/public_addresses /etc/sysconfig/nfs /etc/sysconfig/ctdb
爲三個節點都新增一塊20G硬盤,看上去更直觀一點,不添加也是一樣
mkdir /data
mkfs.ext4 /dev/sdb
echo "/dev/sdb /data ext4 defaults 0 0" >> /etc/fstab
mount -a
開始安裝 gluster
搜索gluster軟件源
yum search centos-release-gluster
就選擇gluster4.1版本的安裝吧,也不是版本越高越好
時隔不到兩個月 4.8-6.4 centos-release-gluster41版本已經安裝不成了。。。安裝4.1版本軟件源後再安裝相關軟件包時會提示依賴問題。。。
所以換成centos-release-gluster6 吧。。。
安裝軟件源
yum -y install centos-release-gluster41
安裝需要的軟件包
yum -y install glusterfs glusterfs-server glusterfs-rdma glusterfs-geo-replication
安裝完成後可以查看一下
rpm -qa | grep gluster
安裝完成 啓動GlusterFS並設置開機啓動
systemctl enable glusterd
systemctl start glusterd
下面關於gluster的操作,如非註明,基本上一個節點操作就可以了。
在某一節點執行,將其他兩個節點加入集羣 比如192.168.199.71
gluster peer probe 192.168.199.72
gluster peer probe 192.168.199.73
添加完成查看集羣狀態
gluster peer status
創建卷 測試使用,創建一個簡單地 3副本複製卷就好, 卷名vol-test
如果在根目錄上創建要使用 force 即命令末尾加上 force
gluster volume create vol-test replica 3 192.168.199.71:/data/brick 192.168.199.72:/data/brick 192.168.199.73:/data/brick
創建成功可以查看卷信息
gluster volume info
可以看到是一個 基本卷----複製卷 三個副本。
開啓卷,查看卷狀態
gluster volume start vol-test
gluster volume status
現在glusterfs卷已經設置成功。可以測試一下是否可用。建立一個主機,安裝glusterfs glusterfs-cli glusterfs-fuse後進行測試
yum -y install centos-release-gluster41
yum -y install glusterfs glusterfs-cli glusterfs-fuse
掛載 gluster創建的捲到本地
mkdir /mnt/test-gluster
mount -t glusterfs 192.168.199.71:vol-test /mnt/test-gluster/
這裏的ip可以是192.168.199.71,也可以是 72 或者73
接下來,測試節點在該掛載點創建一些 文件,可以在三個節點的 /data/brick/ 中發現相同的文件,三個節點數據是一致的
成功安裝 gluster 並且創建了一個卷,使用gluster掛載到了本地。。。
使用nfs方式掛載gluster的卷。
有些主機 是沒有安裝 gluster 或者不能安裝gluster,需要使用nfs掛載。這時,可以使用 gluster自帶的 nfs
首先確保本機的nfs服務時關閉的
systemctl stop nfs
設置捲開啓 nfs服務
gluster volume set vol-test nfs.disable off
Gluster NFS is being deprecated in favor of NFS-Ganesha Enter "yes" to continue using Gluster NFS (y/n) y
說什麼 GlusterFS NFS將要棄用 還是已經棄用(英語水平一般,也不知道是 is being 是將要還是已經。。。)現在使用NFS-Ganesha 代替了
看這提示 估計是不能成功
查看卷狀態
看 NFS Server on 幾行, Online 是N Pid也沒有,那應該是不行了。。。
測試節點嘗試掛載也會失敗
mount -t nfs 192.168.199.71:vol-test /mnt/test-gluster-nfs/
恢復卷狀態
gluster volume reset vol-test
既然該方法不可用,那就使用 NFS-Ganesha嘗試一下吧。。。
安裝 三個節點都要安裝
yum -y install nfs-ganesha nfs-ganesha-gluster
編輯配置文件 /etc/ganesha/ganesha.conf 基本全部是註釋。。
vim /etc/ganesha/ganesha.conf
添加到末尾即可
三個節點不同的地方可能是 FSAL中的 Hostname?
EXPORT
{
Export_Id = 1 ;
Path = "/vol-test";
Pseudo = "/vol-test";
Disable_ACL = True;
Protocols = "3","4";
Access_Type = RW;
Squash = No_root_squash;
Sectype = "sys";
Transports = "UDP","TCP";
FSAL {
Name = "GLUSTER";
Hostname = "node3.ctdb.feng";
Volume = "vol-test";
}
}
導出的 是 FSAL中 Volume,不是 Path 和 Pseudo。
不要創建 /vol-test 目錄
啓動nfs-ganesha 服務
systemctl start nfs-ganesha
查看 nfs-ganesha日誌
tail -f /var/log/ganesha/ganesha.log
測試節點查看三個節點的導出目錄
showmount -e 192.168.199.71
showmount -e 192.168.199.72
showmount -e 192.168.199.73
使用nfs方式掛載其中一個 如 192.168.199.71
mount -t nfs 192.168.199.71:vol-test /mnt/test-gluster-nfs/
可以看到裏面有一個文件,就是上一步測試使用 gluster方式掛載時創建的。。。
使用ctdb管理gluster的nfs掛載
現在,可以測試使用ctdb 管理gluster達到高可用。。。
現在有一個 gluster 創建的卷 vol-test。將這個卷使用glusterfs方式掛載在三個節點上。
掛載點爲 /mnt/gluster
mkdir /mnt/gluster
mount -t glusterfs 192.168.199.71:vol-test /mnt/gluster
在掛載點創建兩個文件夾,一個作爲鎖共享目錄,一個作爲數據共享目錄
mkdir /mnt/gluster/data
mkdir /mnt/gluster/lock
在 lock 目錄創建 配置文件等。
編輯 nodes 文件
vim /mnt/gluster/lock/nodes
192.168.199.71
192.168.199.72
192.168.199.73
編輯public_addresses文件
vim /mnt/gluster/lock/public_addresses
192.168.199.70/24 ens33
編輯nfs文件
vim /mnt/gluster/lock/nfs
NFS_TICKLE_SHARED_DIRECTORY=/mnt/gluster/lock/nfs-tickles
NFS_HOSTNAME=nfs-server
STATD_PORT=874
STATD_OUTGOING_PORT=876
MOUNTD_PORT=892
RQUOTAD_PORT=875
LOCKD_UDPPORT=872
LOCKD_TCPPORT=872
STATD_SHARED_DIRECTORY=/mnt/gluster/lock/nfs-state
STATD_HOSTNAME="$NFS_HOSTNAME -H /etc/ctdb/statd-callout"
RPCNFSDARGS="-N 4"
ganesha.conf 文件應該不用放在這裏。。。
編輯 ctdb 配置文件
vim /mnt/gluster/lock/ctdb
CTDB_RECOVERY_LOCK=/mnt/gluster/lock/ctdb.lock
CTDB_LOGFILE=/var/log/log.ctdb
CTDB_DEBUGLEVEL=ERR
CTDB_PUBLIC_ADDRESSES=/etc/ctdb/public_addresses
CTDB_NODES=/etc/ctdb/nodes
將原配置文件備份後建立軟鏈接 三個節點都要執行
ln -s /mnt/gluster/lock/nodes /etc/ctdb/nodes
ln -s /mnt/gluster/lock/public_addresses /etc/ctdb/public_addresses
ln -s /mnt/gluster/lock/nfs /etc/sysconfig/nfs
使用ctdb管理內核態nfs 時,都是使用本地存儲。。數據不一致,現在有gluster了,可以再實驗一下管理 內核態nfs
測試節點停止掛載
關閉nfs-ganesha服務
systemctl stop nfs-ganesha
編輯 /mnt/gluster/lock/ctdb
vim /mnt/gluster/lock/ctdb
加上
CTDB_NFS_SKIP_SHARE_CHECK=yes
CTDB_MANAGES_NFS=yes
編輯 /mnt/gluster/lock/exports
vim /mnt/gluster/lock/exports
/mnt/gluster/data *(rw,async,no_root_squash,no_subtree_check,fsid=1235)
在三個節點建立軟鏈接
ln -s /mnt/gluster/lock/exports /etc/exports
三個節點啓動 ctdb 等待狀態OK後,使用測試節點查看並掛載公共IP。提供的共享目錄
showmount -e 192.168.199.70
mkdir /mnt/test-ctdb-nfs
mount -t nfs 192.168.199.70:/mnt/gluster/data /mnt/test-ctdb-nfs
這時,也就不知道 公共IP到底指向的是哪一個IP,即時其中一個節點掛掉了。。公共IP也會飄向另外一個。而測試節點作爲用戶來看,是不知曉這一過程的。。。
測試gluster用戶態nfs的高可用。。。
編輯 /mnt/gluster/lock/ctdb 文件
vim /mnt/gluster/lock/ctdb
將這兩行刪除或者註釋掉。
#CTDB_NFS_SKIP_SHARE_CHECK=yes
#CTDB_MANAGES_NFS=yes
關閉 nfs 服務
systemctl stop nfs
關閉 ctdb 服務
systemctl stop ctdb
啓動nfs-ganesha 服務 並設置開機啓動
systemctl enable nfs-ganesha
systemctl start nfs-ganesha
啓動 ctdb
systemctl start ctdb
測試節點。查看 幾個節點的共享和 公共IP
showmount -e 192.168.199.71
showmount -e 192.168.199.70
測試掛載 公共IP
mkdir /mnt/test-ctdb-gluster
mount -t nfs 192.168.199.70:vol-test /mnt/test-ctdb-gluster/
SAMBA安裝
這裏單說是因爲我感覺自己被Samba+CTDB 折磨的很慘。。。
不要直接安裝
yum -y install samba-4.2.4
按照上面的安裝方法 ,即先設置/etc/yum.repos.d/glusterfs-samba-epel.repo,然後執行yum -y install samba-4.2.4 安裝。
啓動Samba時會報一大堆的錯誤。。。基本是解決不了的(至少我沒解決掉,原因應該是,依賴包不對。。。某些依賴包版本過高)
經過檢驗,發現,把所有包全部下載下來,然後 本地安裝 忽略依賴時,才能正常運行。。。
找一個新的主機 。。。嘗試安裝 samba-4.2.4+ctdb-4.2.4
我的系統是CentOS7 64位,需要下載這個網站的全部rpm包
https://download.gluster.org/pub/gluster/glusterfs/samba/CentOS/epel-7/x86_64/
將這上面的 rpm 包 全部下載下來。。。應該有48 個。然後放到本地準備在本地安裝
本來想我已經下載完成了,在這裏放一個資源連接的,也方便自己後續使用。。。竟然放不成
然後執行 安裝
rpm -ivh * --nodeps --force
–nodeps 表示 忽略依賴, --force 表示強制安裝
這樣就將 Samba和ctdb都安裝上了,版本是 4.2.4 但是,啓動Samba時仍然有可能報錯。。。
這個錯誤好解決一點。。。
yum -y install cups-libs
可能還有其他的依賴包 ,遇到了再補充。
yum install libarchive
再次嘗試啓動
systemctl start smb
安裝完成後。。。請不要
yum -y upgrade
這個命令會把軟件包升級,samba和ctdb會變成4.9。。然後,samba應該還可以用。ctdb就悲劇了。。。這強調針對自己,不過也不知道會不會看到強調就故意執行一下。。。就像燈泡包裝上寫着不要放進嘴裏。。。有些人看到了反而想試一下
安裝完成。這時就可以使用了。。。至於ctdb管理Samba,個人理解更像是 ctdb 管理Samba的啓停。。。然後Samba的作用應該是linux平臺上文件資源的共享什麼的。。。比如向windows共享文件。
然後,其他的高可用之類,更多地像是ctdb自帶的。如上幾步進行的測試,ctdb的一些很強大的地方, ctdb的public_addresses 。這個虛擬公共IP很是厲害,ctdb服務設置後,是可以直接 ping 通的。。。然後,可以利用公共IP實現高可用,公共IP具體實現不清楚,但是測試時 表明 這個公共IP實際上是指向某一個節點的,當使用公共IP掛載 nfs 或者gluster 時,掛載的公共IP指向的實際節點的 內容。。當公共IP指向的節點出現故障,公共IP會自動飄向另一個完好的節點,因此,用戶在使用公共IP掛載 nfs或gluster時,是感覺不到 自己使用哪一個節點的,且高可用。
Samba 共享指定的目錄,這個使用ctdb管理時,差不多,可以使用公共IP來訪問這些共享目錄,當然,實際看到的是某一個具體節點的共享。。。但是當幾個節點共享的是一個類似於 gluster 創建的卷時,這樣看到的內容就是一樣的。。。
Samba使用測試
安裝完 Samba後,可以先測試一下使用。。
比如當前安裝samba且服務可以正常啓動。IP 192.168.199.62
設置 smb.conf 文件 位置 /etc/samba/smb.conf 如果原本有配置文件。可以備份一份後 創建一個簡單的文件
mv /etc/samba/smb.conf /etc/samba/smb.conf.bak
vim /etc/samba/smb.conf
[global]
workgroup = MYGROUP
security = user
map to guest = Bad User
passdb backend = tdbsam
log file = /var/log/samba/log.%m
printcap name = cups
load printers = yes
cups options = raw
[share]
comment = share all
path = /tmp/share
browseable = yes
writable = no
public = yes
共享的目錄 是 /tmp/sahre 共享名 share,來賓可訪問,只讀。
具體samba設置可以網上查找,samba教程比ctdb多得多。。。
創建 /tmp/sahre 目錄
mkdir /tmp/share
在 該目錄添加一些內容。。隨便就好
touch /tmp/share/fengyun
使用testparm 命令 檢測配置文件 是否正確
testparm
看到 Loaded services file OK 就基本正常。。。
可以在windows上打開一個瀏覽器 訪問
file://192.168.199.62/share
有此,基本可以證明 安裝的samba是沒問題的。。。
測試Samba高可用
把之前的三個節點重新安裝一下系統。再重新安裝一下samba+ctdb,測試一下使用ctdb管理samba,除了上一步安裝的 samba應該都是無法啓動的。。。
三個 節點的 IP
192.168.199.71
192.168.199.72
192.168.199.73
欲使用的公共IP 192.168.199.70 就是說這個IP是沒被哪個主機使用的
測試節點 IP
192.168.199.62
三個節點 安裝samba + ctdb
不要設置 /etc/yum.repos.d/glusterfs-samba-epel.repo 了。。。
安裝 samba+ctdb
安裝 cups-libs
yum -y install cups-libs
簡單起見,就不再掛載一塊新硬盤了 創建目錄 data
mkdir /data
安裝 GlusterFS
yum -y install centos-release-gluster41
yum -y install glusterfs glusterfs-server glusterfs-rdma glusterfs-geo-replication
開啓gluster服務並設置開機啓動
systemctl enable glusterd
systemctl start glusterd
在某一個節點把其它節點加入集羣
gluster peer probe 192.168.199.72
gluster peer probe 192.168.199.73
創建卷 卷名 vol-share 用來給samba設置共享目錄。。。
gluster volume create vol-share replica 3 192.168.199.71:/data/brick 192.168.199.72:/data/brick 192.168.199.73:/data/brick force
查看卷信息
gluster volume info
在三個節點掛載 vol-share 捲到本地
mkdir /mnt/data
mount -t glusterfs 192.168.199.71:vol-share /mnt/data/
創建配置文件
先創建目錄
mkdir /mnt/data/lock
mkdir /mnt/data/share
設置權限 所有用戶可讀寫 這個極不安全,只是試驗時設置一下。
chmod 777 /mnt/data/share
編輯 samba配置文件
vim /mnt/data/lock/smb.conf
[global]
workgroup = MYGROUP
security = user
map to guest = Bad User
passdb backend = tdbsam
log file = /var/log/samba/log.%m
printcap name = cups
load printers = yes
cups options = raw
[share]
comment = share all
path = /mnt/data/share
browseable = yes
writable = yes
public = yes
編輯 ctdb 配置文件
vim /mnt/data/lock/ctdb
CTDB_RECOVERY_LOCK=/mnt/data/lock/ctdb.lock
CTDB_LOGFILE=/var/log/log.ctdb
CTDB_DEBUGLEVEL=ERR
CTDB_PUBLIC_ADDRESSES=/etc/ctdb/public_addresses
CTDB_NODES=/etc/ctdb/nodes
CTDB_MANAGES_SAMBA=yes
CTDB_SAMBA_SKIP_SHARE_CHECK=yes
CTDB_MANAGES_SAMBA=yes
CTDB_SAMBA_SKIP_SHARE_CHECK=yes
表示對samba進行管理
編輯 nodes 文件
vim /mnt/data/lock/nodes
192.168.199.71
192.168.199.72
192.168.199.73
編輯public_addresses文件
vim /mnt/data/lock/public_addresses
192.168.199.70/24 ens33
三個節點備份好原文件後 建立軟鏈接
mv /etc/sysconfig/ctdb /etc/sysconfig/ctdb.bak
mv /etc/samba/smb.conf /etc/samba/smb.conf.bak
ln -s /mnt/data/lock/nodes /etc/ctdb/nodes
ln -s /mnt/data/lock/public_addresses /etc/ctdb/public_addresses
ln -s /mnt/data/lock/ctdb /etc/sysconfig/ctdb
ln -s /mnt/data/lock/smb.conf /etc/samba/smb.conf
和上文基本一致。又重寫了一遍加深一下印象。。。
三個節點都啓動 ctdb。。。
在三個節點執行
systemctl start ctdb
或者 在某一個節點執行應該是 啓動集羣中所有ctdb服務
onnode -p all service ctdb start
不過好像要輸入密碼。。。而且 也不一定能成功。。。要設置一些免ssh登錄什麼的。。。
成功啓動後 查看狀態
ctdb status
全部變成OK 後,可以在 Windows上打開一個瀏覽器。。。訪問
file://192.168.199.70/share
可以嘗試向其中添加一些東西
這時在 三個節點的該目錄下都可以看到該文件。。。
可以把一個節點關掉,仍然可以訪問我想samba的高可用大概是這個意思吧。。。
這篇博客還挺長。。。