1. 软件环境
     CentOS7(4台)
     JDK1.8
     2台http服务器
     2台负载均衡:lvs+keepAlived
  2. http服务器安装配置(2台)
     输入 yum -y install httpd 安装http服务器
     输入 systemctl enable httpd.service 设为开机自启动
     输入 systemctl start httpd.service 启动http服务器
     输入 systemctl status httpd.service 查看http服务器状态
     进入 /var/www/html/ 目录,输入 vi index.html,随便写点内容,标识节点即可
     输入 vi /etc/init.d/realserver 配置真实服务器,加入以下内容
    #!/bin/bash
    #description : start realserver
    SNS_VIP=192.168.11.200
    /etc/rc.d/init.d/functions
    case “$1” in
    start)
    echo " start LVS of REALServer"
    /sbin/ifconfig lo:0 $SNS_VIP broadcast $SNS_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
    解释:
    #!/bin/bash
    #description : start realserver
    SNS_VIP=192.168.11.200 #定义VIP变量,注意在同一网段
    /etc/rc.d/init.d/functions #导脚本库
    case “$1” in #case语句 $1传递给该shell脚本的第一个参数
    start)
    echo " start LVS of REALServer"
    /sbin/ifconfig lo:0 $SNS_VIP broadcast $SNS_VIP netmask 255.255.255.255 up $SNS_VIP #增加本地路由 lo:0
    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
     输入 chmod 777 /etc/init.d/realserver 赋予权限
     输入 service realserver start 启动服务
     输入 ifconfig 查看,多出一块网卡
  3. lvs+keepAlived安装配置
     输入 uname -a 查看Linux版本,如果为2.6以后,内核中已有lvs
     输入 yum -y install keepalived 安装keepAlived
     输入 rpm -ql keepalived 查看rpm包安装到的目录
     输入 > /etc/keepalived/keepalived.conf 创建并覆盖配置文件
     输入 vi /etc/keepalived/keepalived.conf 编辑配置文件,加入以下内容
    global_defs {

notification_email {

}

smtp_connect_timeout 30

router_id LVS_DEVEL

}

vrrp_instance VI_1 {

state MASTER

interface eno16777736

virtual_router_id 51

priority 100

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.11.200

}

}

virtual_server 192.168.11.200 80 {

delay_loop 6

lb_algo wrr

lb_kind DR

nat_mask 255.255.255.0

persistence_timeout 0

protocol TCP

real_server 192.168.11.135 80 {

weight 1

TCP_CHECK {

connect_timeout 10

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

real_server 192.168.11.138 80 {

weight 2

TCP_CHECK {

connect_timeout 10

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

}

解释:

global_defs { #全局配置部分

notification_email { #下面几行均为全局通知配置,可以实现出现问题后报警,但功能有限,因此注释掉,并采用Nagios监视lvs运行情况

}

smtp_connect_timeout 30

router_id LVS_DEVEL    #设置lvs的id,在一个网络内应该是唯一的

}

vrrp_instance VI_1 { #设置vrrp组,唯一且同一LVS服务器组要相同

state MASTER #备份LVS服务器设置为BACKUP,这里是MASTER

interface eno16777736 #设置对外服务的接口

virtual_router_id 51 #设置虚拟路由标识

priority 100 #设置优先级,数值越大,优先级越高,backup设置为99,这样就能实现当master宕机后自动将backup变为master,而当原master恢复正常时,则现在的master再次变为backup。

advert_int 1 #设置同步时间间隔

authentication { #设置验证类型和密码,master和buckup一定要设置一样

auth_type PASS

auth_pass 1111 #主备机设置为一样,互相通话

}

virtual_ipaddress { #设置VIP,可以多个,每个占一行

192.168.11.200

}

}

virtual_server 192.168.11.200 80 { #tomcat等服务器也要为80端口

delay_loop 6 #健康检查时间间隔,单位s

lb_algo wrr #负载均衡调度算法设置为加权轮询

lb_kind DR #负载均衡转发规则,这是效率最高的规则

nat_mask 255.255.255.0 #网络掩码,DR模式要保障真实服务器和lvs在同一网段

persistence_timeout 0 #会话保持时间,单位s,这里设置保持时间,不能解决session共享问题,session按最后一次请求算

protocol TCP #协议

real_server 192.168.11.135 80 { #真实服务器配置,80表示端口

weight 1 #权重,和wrr加权轮询配对出现

TCP_CHECK { #服务器检测方式设置 keepalived的健康检查方式 有:HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|MISC_CHECK

connect_timeout 10 #连接超时时间

nb_get_retry 3 #失败重试次数

delay_before_retry 3 #失败重试的间隔时间

connect_port 80 #连接的后端端口

}

}

real_server 192.168.11.138 80 {

weight 2

TCP_CHECK {

connect_timeout 10

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

}

 输入 service keepalived start

 可以输入 tail -f /var/log/messages 查看日志

 还可以输入 service keepalived status 查看运行状态

4. lvs+keepAlived负载均衡测试

 转发

 故障移除

 故障恢复自动添加

5. lvs备机搭建

 输入 uname -a 查看Linux版本,如果为2.6以后,内核中已有lvs

 输入 yum -y install keepalived 安装keepAlived

 输入 rpm -ql keepalived 查看rpm包安装到的目录

 输入 > /etc/keepalived/keepalived.conf 创建并覆盖配置文件

 输入 vi /etc/keepalived/keepalived.conf 编辑配置文件,加入以下内容

global_defs {

notification_email {

}

smtp_connect_timeout 30

router_id LVS_DEVEL

}

vrrp_instance VI_1 {

state BACKUP

interface eno16777736

virtual_router_id 51

priority 99

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.11.200

}

}

virtual_server 192.168.11.200 80 {

delay_loop 6

lb_algo wrr

lb_kind DR

nat_mask 255.255.255.0

persistence_timeout 0

protocol TCP

real_server 192.168.11.135 80 {

weight 1

TCP_CHECK {

connect_timeout 10

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

real_server 192.168.11.138 80 {

weight 2

TCP_CHECK {

connect_timeout 10

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

}

解释:

global_defs { #全局配置部分

notification_email { #下面几行均为全局通知配置,可以实现出现问题后报警,但功能有限,因此注释掉,并采用Nagios监视lvs运行情况

}

smtp_connect_timeout 30

router_id LVS_DEVEL    #设置lvs的id,在一个网络内应该是唯一的

}

vrrp_instance VI_1 { #设置vrrp组,唯一且同一LVS服务器组要相同

state BACKUP #备份LVS服务器设置为BACKUP,这里是MASTER

interface eno16777736 #设置对外服务的接口

virtual_router_id 51 #设置虚拟路由标识

priority 99 #设置优先级,数值越大,优先级越高,backup设置为99,这样就能实现当master宕机后自动将backup变为master,而当原master恢复正常时,则现在的master再次变为backup。

advert_int 1 #设置同步时间间隔

authentication { #设置验证类型和密码,master和buckup一定要设置一样

auth_type PASS

auth_pass 1111 #主备机设置为一样,互相通话

}

virtual_ipaddress { #设置VIP,可以多个,每个占一行

192.168.11.200

}

}

virtual_server 192.168.11.200 80 { #tomcat等服务器也要为80端口

delay_loop 6 #健康检查时间间隔,单位s

lb_algo wrr #负载均衡调度算法设置为加权轮询

lb_kind DR #负载均衡转发规则,这是效率最高的规则

nat_mask 255.255.255.0 #网络掩码,DR模式要保障真实服务器和lvs在同一网段

persistence_timeout 0 #会话保持时间,单位s,这里设置保持时间,不能解决session共享问题,session按最后一次请求算

protocol TCP #协议

real_server 192.168.11.135 80 { #真实服务器配置,80表示端口

weight 1 #权重,和wrr加权轮询配对出现

TCP_CHECK { #服务器检测方式设置 keepalived的健康检查方式 有:HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|MISC_CHECK

connect_timeout 10 #连接超时时间

nb_get_retry 3 #失败重试次数

delay_before_retry 3 #失败重试的间隔时间

connect_port 80 #连接的后端端口

}

}

real_server 192.168.11.138 80 {

weight 2

TCP_CHECK {

connect_timeout 10

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

}

 输入 service keepalived start

 可以输入 tail -f /var/log/messages 查看日志

 还可以输入 service keepalived status 查看运行状态

6. lvs主备测试

 输入 tail -f /var/log/messages 查看备机日志

 主机中输入 service keepalived stop 模拟挂掉

 备机自动切换

 主机启动,主机自动上位