RedHat6.2系统安装ipvsadm+keepalived
一、安装IPVS
软件包下载:
链接:https://pan.baidu.com/s/1zNgPtALbdBTC1H6e0IaZPw
提取码:xm7t
1、检查内核模块,看一下ip_vs 是否被加载
lsmod |grep ip_vs
如果没有显示,则说明没有加载,执行如下命令 就可以把ip_vs模块加载到内核
modprobe ip_vs
2、查看内核版本
uname -r
3、创建链接文件
ln -sv /usr/src/kernels/2.6.32-431.el6.x86_64 /usr/src/linux
4、安装libnl-devel-1.1.4-2.el6.x86_64.rpm
rpm -ivh libnl-devel-1.1.4-2.el6.x86_64.rpm
5、安装popt-static-1.13-7.el6.x86_64.rpm
rpm -ivh popt-static-1.13-7.el6.x86_64.rpm
6、把ipvsadm-1.26.tar.gz安装包上传到/tmp目录下,并解压
tar -xvf ipvsadm-1.26.tar.gz
7、进入解压后的ipvsadm-1.26文件夹
cd ipvsadm-1.26
8、编译ipvsadm安装文件
make
9、安装
make install
10、检验ipvsadm 是否被正确安装。输入命令
ipvsadm
如果有以下输出表示安装成功:
IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn
二、安装Keepalive
1、上传keepalived-1.2.4.tar.gz安装包到服务器并解压
tar -xvf keepalived-1.2.4.tar.gz
2、进入解压后的进入解压后的keepalived-1.1.17目录
cd keepalived-1.2.4
3、配置文件
./configure -prefix=/usr/local/keepalive
因为keepalived 运行在ip_vs 之上,因此上面这条命令是保证这两个软件安装在同一个系统里面。如果configure操作能正常进行,运行完毕后将有如下的汇总输出:
Keepalived configuration ------------------------ Keepalived version : 1.2.4 Compiler : gcc Compiler flags : -g -O2 Extra Lib : -lpopt -lssl -lcrypto -lnl Use IPVS Framework : Yes IPVS sync daemon support : Yes IPVS use libnl : Yes Use VRRP Framework : Yes Use VRRP VMAC : Yes Use Debug flags : No
4、编译Keepalive安装文件
make
5、安装
make install
安装完成后,会在安装目录/usr/local/keepalive下生成bin,etc,man,sbin四个目录。其中etc目录为配置文件所在的目录。
三、LVS配置
1、进入Keepalive所在目录
cd /usr/local/keepalive/etc/keepalived/
2、编辑目录下的Keepalived.conf配置文件
vi keepalived.conf
按键盘“i”进行编辑,编辑完成后按“:wq!”保存退出。
编辑完成后的配置文件如下所示:
# more /etc/keepalived/keepalived.conf # guration File for keepalived # global define global_defs { router_id LVS_TJ_1 } vrrp_sync_group VGM { group { VI_CACHE } } # vrrp_instance define vrrp_instance VI_CACHE { state MASTER interface eth0 lvs_sync_daemon_inteface eth0 virtual_router_id 51 priority 180 advert_int 5 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 172.20.100.200 } } # virtual machine(Locator) setting # setting port 16666 forward virtual_server 172.20.100.200 16666 { delay_loop 6 lb_algo rr lb_kind DR persistence_timeout 300 protocol TCP real_server 172.20.100.227 16666 { weight 100 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 16666 } } real_server 172.20.100.229 16666 { weight 100 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 16666 } } }
配置项 |
含义 |
说明 |
全局定义块(global define) |
||
router_id |
LVS负载均衡器标识 |
在一个网络内,此标识必须是唯一的。 |
vrrp_sync_group |
同步vrrp 组 |
确定失败切换(FailOver)包含的路由实例个数。 |
group |
实例组 |
至少包含一个vrrp 实例。 |
VRRP实例定义块(vvrp_instance define) |
||
vrrp_instance |
vrrp实例 |
实例名出自实例组group 所包含的那些名字。 |
state |
实例状态 |
只有MASTER和BACKUP 两种状态,并且需要大写。其中MASTER 为工作状态,BACKUP 为备用状态。当MASTER 所在的服务器失效时,BACKUP 所在的系统会自动把它的状态由BACKUP 变换成MASTER;当失效的MASTER 所在的系统恢复时,BACKUP 从MASTER 恢复到BACKUP 状态。 |
interface |
通信接口 |
对外提供服务的网络接口。与当前系统使用的网络接口相一致。 |
lvs_sync_daemon_inteface |
负载均衡器间的监控接口 |
类似于HA HeartBeat的心跳线。但它的机制优于Heartbeat,因为它没有“裂脑”这个问题,它是以优先级这个机制来规避这个麻烦的。在DR 模式中,lvs_sync_daemon_inteface 与服务接口interface 使用同一个网络接口。 |
virtual_router_id |
虚拟路由标识(数字表示) |
MASTER和BACKUP的virtual_router_id 是一致的,在整个vrrp 内是唯一的。 |
priority |
优先级(数字表示) |
数值愈大,优先级越高。在同一个vrrp_instance里,MASTER 的优先级高于BACKUP。 |
advert_int |
同步通知间隔 |
MASTER 与BACKUP 负载均衡器之间同步检查的时间间隔,单位为秒。 |
auth_type |
验证类型 |
主要有PASS、AH 两种类型,通常使用PASS类型。 |
auth_pass |
验证密码 |
验证密码为明文,同一vrrp实例MASTER 与BACKUP 使用相同的密码才能正常通信。 |
virtual_ipaddress |
虚拟ip地址(VIP) |
可以有多个地址,每个地址占一行,不需要指定子网掩码。注意:这个ip就是lvs虚拟出来给真实服务器使用的。 |
虚拟服务器定义块(virtual machine setting) |
||
virtual_server |
虚拟服务器 |
与virtual_ipaddress地址一致,后面加上端口号。而且定义一个vip,可以实现多个tcp 端口的负载均衡功能。 |
delay_loop |
健康检查时间间隔 |
单位是秒。 |
lb_algo |
负载均衡调度算法 |
MAP是基于RTSP的服务,推荐使用基于最简单的轮叫调度算法(rr)或局部性的最少链接算法(lblc),不需配置会话保持(有利于均衡调度);iEPG、AAA都是基于HTTP的服务,推荐使用加权最小连接算法(wlc),不需配置会话保持(有利于均衡调度)。 |
lb_kind |
负载均衡转发规则 |
包括DR、NAT、TUN三种,一般在OpenCloud解决方案中使用DR方式。 |
persistence_timeout |
会话保持时间 |
单位是秒。 |
protocol |
转发协议 |
有TCP和UDP两种。 |
real_server |
真实服务器 |
可设置多个真实服务器,真实IP加上相同的端口号。 |
weight |
权重 |
数值越大,权重越高。使用不同的权重值的目的在于为不同性能的机器分配不同的负载,性能较好的机器,负载分担大些;反之,性能差的机器,则分担较少的负载,这样就可以合理的利用不同性能的机器资源。 |
TCP_CHECK |
TCP检查 |
检查TCP网络情况。 |
3、在/etc下建立keepalived目录
mkdir /etc/keepalived
4、在/etc/keepalived下创建一个软链接
ln -s /usr/local/keepalive/etc/keepalived/keepalived.conf /etc/keepalived/
5、在/etc/ rc.d/init.d/下创建一个软链接
ln -s /usr/local/keepalive/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
6、在/etc/sysconfig/下创建一个软链接
ln -s /usr/local/keepalive/etc/sysconfig/keepalived /etc/sysconfig/
7、在/usr/sbin/下创建一个软链接
ln -s /usr/local/keepalive/sbin/keepalived /usr/sbin/
8、把keepalived加入到系统服务中
chkconfig --add keepalived
9、将keepalived服务设成开机自启动
chkconfig --level 35 keepalived on
四、真实服务器配置
分别在两台真实Lcator服务器上建立配置脚本,负责服务的启动、停止,具体操作步骤如下:
1、进入配置脚本放置路径
cd /usr/local/bin/
2、新建一文件并输入配置
vi lvs_real
按键盘“i”进行编辑,输入如下配置信息:
# more/usr/local/bin/lvs_real #!/bin/bash #description : start realserver VIP=172.20.100.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
五、LVS集群启动
1、启动Keepalived
service keepalived start
2、验证Keepalived是否启动
ps aux|grep keepalived
如有以下输出表示Keepalived已启动:
[root@228 keepalived]# ps aux|grep keepalived root 96431 1.8 0.0 42136 792 ? Ss 14:47 0:00 keepalived -D root 96432 0.0 0.0 44364 2160 ? S 14:47 0:00 keepalived -D root 97548 0.0 0.0 103252 852 pts/1 S+ 14:47 0:00 grep keepalived
3、在真实的locator服务器上启动LVS脚本
/usr/local/bin/lvs_real start
4、启动locator服务
5、在LVS服务器上验证均衡负载情况
ipvsadm
IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 172.20.100.200:16666 rr persistent 300 -> 172.20.100.227:16666 Route 100 0 5 -> 172.20.100.229:16666 Route 100 0 1