centos7.2 搭建keepalived+lvs
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了centos7.2 搭建keepalived+lvs相关的知识,希望对你有一定的参考价值。
centos7 系统安装出来默认的网卡设备名变成了eno....看着不舒服,先来修改下网卡设备名
添加虚拟网卡后不要使用ifconfig查看,要使用ip addr来看虚拟网卡设备名一般为ens37...
安装系统前光标放在"install centos 7"使用tap建,在kernel最后面添加net.ifnames=0 biosdevname=0
已安装好的系统
vim /etc/sysconfig/grub
GRUB_CMDLINE_LINUX在其后面添加net.ifnames=0 biosdevname=0
grub2-mkconfig -o /boot/grub2/grub.cfg
vim /etc/udev/rules.d/90-eno-fix.rules
将eno...改成eth0
网卡文件名和设备名全部改成eth开头即可。
[[email protected] network-scripts]# ls
ifcfg-eth0 ifdown-eth ifdown-post ifdown-TeamPort ifcfg-eth1
[[email protected] network-scripts]# cat ifcfg-eth0(这里)
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
NAME=eth0(这里)
DEVICE=eth0(这里)
reboot即可
这里顺带提一下修改MAC电脑的密码,开机按command+r进入重装系统界面,调出命令行,输入resetpassword回车,选择用户,根据提示来即可。
进入正题
selinux和firewalld关闭
1.wget http://www.keepalived.org/software/keepalived-1.2.22.tar.gz
2.wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.26-1.src.rpm
rpm -ivh ipvsadm-1.26-1.src.rpm
yum install -y ipvsadm
3.yum install -y gcc gcc+ openssl openssl-devel keepalived
4.tar -xf keepalived-1.2.22.tar.gz
5.cd keepalived-1.2.22/ && ./configure --prefix=/usr/local/ && make && make install
6.mkdir /etc/keepalived
7.cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
8.cd /etc/keepalived/ && vim keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
[email protected](不使用sendmail,修改为本地)
}
notification_email_from [email protected](这里也是)
smtp_server localhost
smtp_connect_timeout 30
router_id LVS1 (这里先修改为LVS1)
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state MASTER(主)
interface eth0 (绑定的网卡与你的网卡设备名一致)
virtual_router_id 51(VRRP组名,两个节点的设置必须一样,以指明各个节点属于同一VRRP组)
priority 100(主节点的优先级(1-254之间),备用节点必须比主节点优先级低)
advert_int 1(组播信息发送间隔,两个节点设置必须一样 )
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.10.200 (VIP)
}
}
virtual_server 192.168.10.200 8080 {
delay_loop 6
lb_algo rr
lb_kind DR
persistence_timeout 0
protocol TCP
nat_mask 255.255.255.0
real_server 192.168.10.20 8080 {
weight 1
SSL_GET {
url {
path /index.jsp
digest ff20ad2481f97b1754ef3e12ecd3a9cc
}
url {
path /mrtg/
digest 9b3a0c85a887a256d6939da88aabd8cd
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
9.按同样的方法配置另一节点并修改配置文件,可将次节点的配置文件复制到另一节点,并修改以下几项:
router_id LVS2
state BACKUP
priority 99
其它项不必修改。
10.两边都配置完成后先启动主节点
systecmctl start keepalived
11.HTTP_GET:配置健康检查
url {
path /index.jsp 健康检查的页面
digest 625eddd79c61cf84c71c0c17448f8093 根据页面计算出的MD5的值,这个值一定不能随便写,不然keepliv
}
下面说一下如何计算digest
进入到/usr/local/keepalive/bin
./genhash -s 192.168.1.107 -p 8080 -u /index.jsp
通过上诉命令计算digest 然后写到配置文件上就可以了。
12.配置真实服务器
说明:一般真实互联网应用都配置为lb_kind = dr 模式,因为这种模式效率是最高的,缺点就是配置稍微复杂一点,需要配置客户端。
DR模式原理请参考:http://atong.blog.51cto.com/2393905/1348602
简单说一下: 假设A为前端负载均衡服务器, B,C为后端真实服务器。 A接收到数据包以后,会把数据包的MAC地址改成B的(根据调度算法,假设发给B服务器),然后把数据包重新发出去,交换机收到数据包根据MAC地址找到B,把数据包交给B。 这时B会收到数据包,同时验证请求IP地址,由于数据包里的IP地址是给A的,所以正常情况下B会丢弃数据包,为了防止这种情况,需要在B机器的回环网卡上配置A的IP地址。并设置ARP压制。
1:在真实服务器上运行脚本文件
#!/bin/bash
#description : start realserver
VIP=192.168.10.200
/etc/rc.d/init.d/functions
case "$1" in
start)
echo " start LVS of 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)
/sbin/ifconfig lo:0 down
echo "close LVS Directorserver"
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
VIP=192.168.10.200 大家只要修改这个地方为虚拟IP即可,别的地方都不需要改。
2:需要对脚本授权
chmod +x lvs_real.sh
3:如果脚本是在windows编辑在拷贝过去的会有问题,好像是回车换行符不同导致的。
sed -i ‘s/
$//‘ lvs_real.sh
4:运行脚本
./lvs_real.sh
13.健康检查方式
virtual_server 192.168.10.200 8080 {
delay_loop 6
lb_algo rr
lb_kind DR
nat_mask 255.255.255.0
persistence_timeout 0
protocol TCP
real_server 192.168.10.129 8080 {
weight 1
TCP_CHECK {
connect_port 8080
connect_timeout 5
}
}
real_server 192.168.10.130 8080 {
weight 1
TCP_CHECK {
connect_port 8080
connect_timeout 5
}
}
}
connect_timeout 5 :连接超时时间
nb_get_retry 3 :重连次数
delay_before_retry 3 :重连间隔时间
connect_port 8080 :检测端口
下次想分享下6系统基于图形化的lvs+keepalived
以上是关于centos7.2 搭建keepalived+lvs的主要内容,如果未能解决你的问题,请参考以下文章