欢迎来到Louis的博客

人生三从境界:昨夜西风凋碧树,独上高楼,望尽天涯路。 衣带渐宽终不悔,为伊消得人憔悴。 众里寻他千百度,蓦然回首,那人却在灯火阑珊处。
扩大
缩小

CentOS 7 上的LVS+keepalived安装及配置

 

1.服务器初始化

 

服务器建议最小化安装。关闭SELINUXiptables以及一些不需要的服务,检查时间设置并校准,设置语言,修改文件描述符限制,优化内核参数等。初始化可使用脚本进行。
安装必要软件。

1 yum -y install screen sysstat vim-enhanced lrzsz

 

2.KeepalivedLVS安装

 

系统自带的软件包已足够新所以在前端LVS2台服务器上直接使用yum安装

 

yum install keepalived ipvsadm
systemctl enable keepalived.service

在发生主备切换和发现后端机器up/down的时候需要发送邮件通知

yum -y install sendmail
systemctl start sendmail.service
systemctl enable sendmail.service

3.Keepalived配置文件

由于是使用keepalived+LVS的结构,所以前端LVS只需要配置Keepalived的配置文件即可。/etc/keepalived/keepalived.conf文件,注意主机和备机配置文件的区别。

 

! Configuration File for keepalived                ###http://www.keepalived.org/pdf/UserGuide.pdf 官方配置文档

global_defs {
   notification_email {                            ##配置邮件
     test@test.com                                ##收到通知邮件的邮件帐户
   }
   notification_email_from test-lvs@testcdn.com    ##用于SMTP邮件发送的帐户
   smtp_server 127.0.0.1                        ##由于发送邮件的SMTP邮件服务器地址
   smtp_connect_timeout 30                        ##邮件发送超时时间
   router_id TEST_LVS                            ##标识本节点的字条串,通常为hostname,但不一定非得是hostname。故障发生时,邮件通知会用到,主机和备机上的router_id设置为一致,同一个网络中必须唯一,注意在一个网段里有多个集群的话需要设置成不同的router_id。
}
        
vrrp_instance VI_1 {            
    state MASTER                    ##指定实例状态,配置为MASTER,
    interface em1                    ##指定实例运行在哪个网络接口上
    virtual_router_id 51            ##虚拟路由ID(0-255),在一个VRRP实例中主备服务器ID必须一样,但是在同一个网络中不可存在同样的virtual_router_id,不要和其他集群重复,如果一个配置文件中配置了多个VRRP实例,各个实例的virtual_router_id也必须区分开来
    priority 150                    ##优先级值设定:MASTER要比BACKUP的值大
    advert_int 1                    ##设定MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒。
    authentication {                ##认证机制
        auth_type PASS                ##默认PASS; 有两种:PASS或AH
        auth_pass 1111            ##默认1111; 可多位字符串,但仅前8位有效,设置验证密码,在一个vrrp_instance下,MASTER与BACKUP必须使用相同的密码才能正常通信。
    }
    virtual_ipaddress {
        192.168.146.100                ##虚拟IP,可多个,写法为每行一个
    }
}

virtual_server 192.168.146.100 80 { 
    delay_loop 6                    ##设置健康状态检查时间
    lb_algo wrr                        ##调度算法,加权轮训调度
    lb_kind DR                        ##LVS工作模式,这里使用的是Direct Route模式
    persistence_timeout 50            ##持久连接超时时间,会话保持时间,单位是秒,这个选项对于动态网页是非常有用的,为集群系统中session共享提供了一个很好的解决方案。有了这个会话保持功能,用户的请求会被一直分发到某个服务节点,直到超过这个会话保持时间。需要注意的是,这个会话保持时间,是最大无响应超时时间,也就是说用户在操作动态页面时,如果在50秒内没有执行任何操作,那么接下来的操作会被分发到另外节点,但是如果一直在操作动态页面,则不受50秒的时间限制。
    protocol TCP                    ##指定转发协议类型,有tcp和udp两种。 
    virtualhost cdn.test.com        ##指定使用HTTP_GET或SSL_GET时的虚拟主机地址

    real_server 192.168.146.105 80 {    ##指定一个RS成员
        weight 3                    ##配置服务节点的权值,权值大小用数字表示,数字越大,权值越高,设置权值的大小可以为不同性能的服务器分配不同的负载,可以对性能高的服务器设置较高的权值,而对性能较低的服务器设置相对较低的权值,这样就合理的利用和分配了系统资源。
        HTTP_GET {                    ##使用HTTP_GET检测RS的使用可用性
            url {        
                path /lvs_check        ##指定URL路径
                status_code 200        ##指定访问URL返回的状态码
            }
            connect_timeout 10        ##指定连接RS超时时间
            nb_get_retry 3            ##重试次数
            delay_before_retry 3    ##重试间隔
            connect_port 80            ##指定连接的RS端口
        }
    }


    real_server 192.168.146.106 80 {
        weight 3
        HTTP_GET {
            url {
                path /lvs_check
                status_code 200
            }
            connect_timeout 10
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }

}


#https
virtual_server 192.168.146.100 443 {    ##设置https支持
    delay_loop 6
    lb_algo wrr
    lb_kind DR
    persistence_timeout 50
    protocol TCP
    virtualhost cdn.test.com

    real_server 192.168.146.105 443 {
        weight 3
        SSL_GET {                    ####使用SSL_GET检测RS的使用可用性
        url {
        path /lvs_check
        status_code 200
        }
            connect_timeout 10
            nb_get_retry 3
            delay_before_retry 3
            connect_port 443
        }
    }


    real_server 192.168.146.1106 443 {
        weight 3
        SSL_GET {
        url {
        path /lvs_check
        status_code 200
        }
            connect_timeout 10
            nb_get_retry 3
            delay_before_retry 3
            connect_port 443
        }
    }

}

 

 

 

 

在备机上我们的配置文件只需要将MASTER改为BACKUP并且priority设置的比MASTER低就行。

 


配置解释:

 

其中global段是全局设置,里面设置了接收报警邮箱和smtp服务器,不支持带身份验证的SMTPnotification_email指定keepalived在发生事件(比如切换)时,需要发送email到的对象,可以有多个,每行一个。这里我们设置为通过本机的sendmail发送邮件。主机和备机上的router_id设置为一致,同一个网络中必须唯一,注意在一个网段里有多个集群的话需要设置成不同的router_idvrrp_script是定义一个健康检查脚本。vrrp_instancevrrp实例名)可以任意命名,两边设置成一致即可,一个配置中可以设置多个vrrp实例,但名字不能相同。virtual_router_id两边需要设置成一样的,值为1~255,但是在同一个网络中不可存在同样的virtual_router_id,不要和其他集群重复!如果一个配置文件中配置了多个VRRP实例,各个实例的virtual_router_id也必须区分开来。interface定义vrrp运行在哪个网络接口上,这里我们的em1为外网,所以定义为em1,具体根据实际情况配置。track_interface定义监测的网卡接口,当其中的一块出现故障keepalived都将视为路由器出现故障。备机上的state需要设置为BACKUP,权重值priority必须要比MASTER低,建议主机设置为150,备机设置为100。主机和备机之间的验证采用密码验证,两边的密码必须设置成一样。虚拟IP地址
virtual_ipaddress根据你的实际情况设置,可以设置多个VIP,每行设置一个,最多支持到20个,如果超过20个需要再定义一个virtual_ipaddress_excluded配置段,将其余的虚拟IP添加进去。

至此Keepalived配置完毕。更多选项参数请参考官网文档或者网络上其他资料。

 

posted on 2018-03-13 13:01  Louiszj  阅读(725)  评论(0编辑  收藏  举报

导航