Samba+CTDB4.2.4安裝,測試ctdb使用,管理nfs,gluster的nfs掛載

關於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

掛載nfs共享目錄

三個節點都掛載完成後,
在某一個節點執行 比如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

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

建立nodes軟鏈接

三個節點執行完畢 可以重新啓動ctdb服務,然後查看節點狀態,可以設置爲 開機啓動

systemctl enable ctdb
systemctl restart ctdb

過一小段時間 查看ctdb狀態
ctdb狀態

可以看到ctdb的狀態。三個節點都是OK的。但是之前也說了,這個ctdb什麼都未管理。。。只是測試是否可用。下一步可以測試一下ctdb管理nfs

使用ctdb管理內核態nfs

其實本人也不是很懂內核態nfs的意思,根據他人博客來看,glusterfs也附帶了nfs服務,GlusterFS的服務稱爲用戶態。

這一段摘自他人博客
https://blog.csdn.net/u013131156/article/details/78790536?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

由於集羣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

重啓ctdb

然後,可以查看nfs狀態,發現被ctdb啓動了

systemctl status nfs

nfs被ctdb啓動

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

ctdb內核態共享

查看公共IP

showmount -e 192.168.199.70

公共IP可用
公共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正常運行

再次查看 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

公共IP掛載
儘管成功了,但是有一些問題。。。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節點
可以看到顯示的 是72, 也就是說我的公共IP現在指向的是72節點。。現在把 72 節點 ctdb停掉

systemctl stop ctdb

再次使用測試節點查看
變成71了
這裏公共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

搜索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安裝完成

安裝完成 啓動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
測試掛載gluster卷
接下來,測試節點在該掛載點創建一些 文件,可以在三個節點的 /data/brick/ 中發現相同的文件,三個節點數據是一致的

成功安裝 gluster 並且創建了一個卷,使用gluster掛載到了本地。。。

使用nfs方式掛載gluster的卷。

有些主機 是沒有安裝 gluster 或者不能安裝gluster,需要使用nfs掛載。這時,可以使用 gluster自帶的 nfs
首先確保本機的nfs服務時關閉的

systemctl stop nfs

設置捲開啓 nfs服務

gluster volume set vol-test nfs.disable off

捲開啓nfs服務

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 代替了
看這提示 估計是不能成功

查看卷狀態
GlusterFS開啓nfs狀態
看 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/

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

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

查看gluster共享
測試掛載 公共IP

mkdir /mnt/test-ctdb-gluster
mount -t nfs 192.168.199.70:vol-test /mnt/test-ctdb-gluster/

測試管理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啓動失敗
經過檢驗,發現,把所有包全部下載下來,然後 本地安裝 忽略依賴時,才能正常運行。。。
找一個新的主機 。。。嘗試安裝 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時仍然有可能報錯。。。
缺少libcups.so.2
這個錯誤好解決一點。。。

yum -y install cups-libs

可能還有其他的依賴包 ,遇到了再補充。

yum install libarchive

再次嘗試啓動

systemctl start smb

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 

測試smb配置文件
看到 Loaded services file OK 就基本正常。。。
可以在windows上打開一個瀏覽器 訪問

file://192.168.199.62/share

samba正常可用
有此,基本可以證明 安裝的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的高可用大概是這個意思吧。。。

這篇博客還挺長。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章