keepalived 单播部署

1、gcc 安装

server01 与 server03 安装 gcc,否则 keepalived 在执行 configure 命令时,会提示“no acceptable C compiler found in $PATH”错误。

解决方法:

https://packages.debian.org/jessie/build-essential

2、libssl-dev 安装

server01 与 server03 安装 libssl-dev,否则 keepalived 在执行 configure 命令时,会提示如下错误:
configure: error:
!!! OpenSSL is not properly installed on your system. !!!
!!! Can not include OpenSSL headers files. !!!

解决方法:

https://packages.debian.org/jessie/libssl-dev

3、keepalived 编译安装

1)下载源码:https://pkgs.org/download/keepalived
2)编译安装:

tar -zxvf keepalived-2.0.20.tar.gz
cd keepalived-2.0.20/
./configure --prefix=/usr/local/keepalived
make && make install

4、启动 keepalived

使用命令“service keepalived start”启动 keepalived 时,提示错误信息:
“Failed to start keepalived.service: Unit keepalived.service is masked.”(“systemctl unmask keepalived.service”)或 “Failed to start keepalived.service: Unit keepalived.service not found.”。

解决方法:

1)使用命令“vim /lib/systemd/system/keepalived.service,”创建keepalived.service文件。文件内容:

[Unit]
Description=Keepalived
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/var/run/keepalived.pid
ExecStart=/usr/local/keepalived/sbin/keepalived -D
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target

其中:
1、“/usr/local/keepalived”是 ./configure 指定的安装目录;
2、PIDFile=/var/run/keepalived.pid 这个路径是keepalived默认存放pid的位置。

2)配置systemctl:

systemctl daemon-reload 重新加载
systemctl enable keepalived.service 设置开机自动启动
systemctl disable keepalived.service 取消开机自动启动
systemctl start keepalived.service 启动
systemctl stop keepalived.service 停止

5、部署 keepalived 单播模式

在前面的文章中,部署了三台服务器:server01(192.168.255.128)、server02(192.168.255.130 与 192.168.177.130)、server03(192.168.177.128),现在尝试在 server01 与 server02 上部署 keepalived 单播模式,进行 keepalived 跨网段尝试。

5.1)修改 keepalived 配置(/etc/keepalived/keepalived.conf)

在这里插入图片描述

5.2)重启服务

systemctl restart keepalived

6、查看 vip 信息

vip 在 server01上:
在这里插入图片描述
在这里插入图片描述

7、测试

安装测试工具 tcpdump:https://packages.debian.org/jessie/tcpdump
在 server01 上抓包查看心跳信息是否发送给了 server02:

tcpdump -i eth0 host -nn 192.168.177.128
在这里插入图片描述
将 server01 上的 keepalive 服务停止
systemctl stop keepalived

在 server02 主机上查看地址是否已经漂移过去:
在这里插入图片描述

8、总结:

1、vip 漂移到 server03 后,server01 以及其他第三方机器出现 ping vip不通,主要是由于:
1)一开始,vip 在 server01 上,由于 vip(192.168.255.222)与 server01(192.168.255.128)同网段,因此 server01、server03 以及其他第三方机器 ping vip 都正常;
2)vip 漂移到 server03(192.168.255.128)后,vip 与 server03 网段不同,由于网关问题,出现除 server03 本身外,其他机器均出现 ping vip 不通。

2、DNS 域名解析可以实现 ip 映射,但是无健康检查功能,若某 ip 对应的后台服务宕机,DNS 是无从知晓的,因此仍旧会将访问分配到此服务器。

3、vip 与 keeplived ip 不同网段的部署方式:
1)vip 使用公网 ip,master 出现故障后,slave 自动接管 vip,切换前后,第三方客户端均能访问到该 vip(公网 ip);
2)2台keepalived为主从关系,并使用两个vip(一个master上有两个vip,一个网段一个),但同一时刻只能有一个vip对外提供服务。
一开始vip_1对外提供服务,vip_2异常,当keepalived_1出现故障后,vip_1与vip_2由keepalived_2接管,vip_2对外提供服务,vip_1异常。
3)2台keepalived互为主备,使用两个vip地址(跨网段,一个masster上一个vip),两个vip都能对外提供服务;
当其中一台keepalived出现故障后,对应的vip由另一台接管,但是该vip不能对外提供服务,另一个vip正常工作。

发布了112 篇原创文章 · 获赞 22 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/u010601662/article/details/104611869