关于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版本的安装吧,也不是版本越高越好
安装软件源
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的高可用大概是这个意思吧。。。
这篇博客还挺长。。。