本安装教程对应的服务ip与角色
机器ip | 机器角色 | 域名 |
192.168.101.50 | vip (虚拟ip) | rancher50.cxh.com |
192.168.101.10 | lvs keepalived (master) | rancher10.cxh.com |
192.168.101.13 | lvs keepalived (backup) | rancher13.cxh.com |
192.168.101.30 | rancher (master node) 、dns服务器 | rancher30.cxh.com |
192.168.101.11 | rancher (work node) | rancher11.cxh.com |
192.168.101.12 | rancher (work node) | rancher12.cxh.com |
第一步:安装linux依赖环境包
yum -y install openssl-devel gcc gcc-c++
第二步:新建keepalived配置文件目录
mkdir /etc/keepalived
第三步:下载wget 命令,并利用weget命令下载keepalived 源码包.
yum install -y wget
wget --no-check-certificate https://www.keepalived.org/software/keepalived-2.0.18.tar.gz
第四步: 解压缩keepalived源码包,移动源码包到/usr/local/ 目录并重命名目录为keepalived
tar -zxvf keepalived-2.0.18.tar.gz
mv keepalived-2.0.18 /usr/local/keepalived
第五步: 进入/usr/local/keepalived目录,编译安装keepalived
cd /usr/local/keepalived
./configure && make && make install
第六步: 拷贝keepalived启动文件和配置文件到对应目录
cp -a /usr/local/etc/keepalived /etc/init.d/
cp -a /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
cp -a /usr/local/sbin/keepalived /usr/sbin/
第七步:新建keepalived配置文件 并拷贝以下keepalived配置内容进去(根据实际情况填写)
vi /etc/keepalived/keepalived.conf
keepalived-master(配置文件)(本机器的配置文件内容,里面的值根据实际情况填写)
! Configuration File for keepalived
global_defs {
router_id 31
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 3
mcast_src_ip 192.168.101.10
priority 200
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.101.50/24
}
}
virtual_server 192.168.101.50 80 {
delay_loop 3
lb_algo wrr
lb_kind DR
protocol TCP
sorry_server 127.0.0.1 80
real_server 192.168.101.11 80 {
weight 1
nb_get_retry 2
delay_before_retry 2
connect_timeout 30
HTTP_GET {
url {
path /healthz
status_code 200
}
}
}
real_server 192.168.101.12 80 {
weight 1
nb_get_retry 2
delay_before_retry 2
connect_timeout 30
HTTP_GET {
url {
path /healthz
status_code 200
}
}
}
}
keepalived-slave配置文件内容( keepalived slave机器的内容,安装本教程安装keepalived在另外一台机器,步骤一样,就是此配置内容和master的个别配置不一样)
! Configuration File for keepalived
global_defs {
router_id 32
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 3
mcast_src_ip 192.168.101.13
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.101.50/24
}
}
virtual_server 192.168.101.50 80 {
delay_loop 3
lb_algo wrr
lb_kind DR
protocol TCP
sorry_server 127.0.0.1 80
real_server 192.168.101.11 80 {
weight 1
nb_get_retry 2
delay_before_retry 2
connect_timeout 30
HTTP_GET {
url {
path /healthz
status_code 200
}
}
}
real_server 192.168.101.12 80 {
weight 1
nb_get_retry 2
delay_before_retry 2
connect_timeout 30
HTTP_GET {
url {
path /healthz
status_code 200
}
}
}
}
第八步:启动keepalived 并开启开机自启.
systemctl start keepalived
systemctl enable keepalived
第九步: 查看keeaplived启动成功状态
systemctl status keepalived
第十步:安装ipvsadm 工具,并查看 lvs转发配置的规则
yum install -y ipvsadm
ipvsadm -Ln
第十一步:查看keepalived绑定的虚拟ip
ip a
第十二步:验证结果
说明:
1. keepalived配置文件内容根据自己的实际情况替换
2. rancher和rancher里面的集群自己提前安装好
3. dns解析器自己提前安装好,这个我之前已经通过docker镜像的方式安装好了,并把负载均衡的域名配置好
参考链接:
https://github.com/jpillora/docker-dnsmasq
用dnsmasq搭建简单DNS_leo_zdz的专栏-CSDN博客
4. 测试的客户端机器的dns服务ip地址配置为自己安装的dns解析器,如果自己不安装dns服务器,则在本地hosts文件配置域名映射即可
5. 选择在另外一台linux机器安装一个备份lvs keepalived,步骤本教程,主要是keepalived配置文件的内容选择第7步的keepalived-slave配置文件内容(里面的值根据实际情况填写)
6:(这一点特别重要!!!):如果发现telent 不通vip的端口,则需要在所有的real server机器添加以下shell脚本,并执行
脚本内容如下:(文件随意命名, 比如我命名为 realserver.sh)则执行命令 sh realserver.sh start , vip:填写实际的虚拟ip
#!/bin/bash
#description:start realserver
vip=192.168.101.50
source /etc/rc.d/init.d/functions
case $1 in
start)
echo "Start Realserver"
/sbin/ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
;;
stop)
echo "Stop Realserver"
/sbin/ifconfig lo:0 down
echo "0" > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0" > /proc/sys/net/ipv4/conf/lo/arp_announce
echo "0" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" > /proc/sys/net/ipv4/conf/all/arp_announce
;;
*)
echo "Usage: $0 (start | stop)"
exit 1
esac