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的高可用大概是这个意思吧。。。

这篇博客还挺长。。。

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