自学内容网 自学内容网

部署LVS+keepalived做网站的高可用,高负载。

  • LVS+keepalived

    • keepalived背景

      • 针对LVS的辅助工具,主要提供故障切换与健康检查。

      • 工作场景:作为调度器的双机热备,以及节点服务器的健康检查以及故障切换(删除条目)。

      • 借鉴了VRRP协议来实现高可用。

    • keepalived部署

      • 拓扑

        • 两台调度器之间实现高可用并实现对web服务器的健康状态检查,web服务器之间做一个负载均衡。

      • 两台调度器的配置

        • 准备前奏

          • 添加或关闭防火墙,内核安全机制也要关闭

          • 关闭NetworkManager

            • 该服务如果不关闭,漂移IP无法进行漂移

        • 安装keepalived并进行配置

          • 安装后先设置为开机自启

            • systemctl disable keepalived

          • 拷贝配置文件:在/etc/keepalived/keepalived

          • 配置文件详解

            • 全局配置部分

              • global_defs {

              • notification_email {

                • 该模块表示当keep发生切换操作后需要发送Email通知,以及发送给哪些邮件地址

              • acassen@firewall.loc

                • 具体的邮件地址,每行一个

              • failover@firewall.loc

              • sysadmin@firewall.loc

              • }

              • notification_email_from Alexandre.Cassen@firewall.loc

                • 该行定义了发送警报邮件的发送者是谁(发件人)

              • smtp_server 192.168.200.1

                • 表示可以用那台服务器的邮件服务发送邮件,通常可以使用127.0.0.1也就是本机提供该服务。

              • smtp_connect_timeout 30

                • 连接stmp服务的超时时间

              • router_id LVS_DEVEL

                • 机器标识:区分不同服务器的标识,对实际的服务的运行不产生影响,邮件服务快速定位

              • vrrp_skip_check_adv_addr

                • 不对master的宣告地址做检查,宽松的运行keepalived

              • vrrp_strict

                • 启用该项是除非恰当设置网络,否则不允许单播通信。

              • vrrp_garp_interval 0

                • 定期宣告IP地址所有权,当设置为0时仅在切换后做宣告

              • vrrp_gna_interval 0

              • }

            • vrrp实例部分

              • vrrp_instance VI_1 {

                • 实例名称,一个服务器可以有多个实例(应用场景)后面会写。

              • state MASTER

                • 确定初始状态的角色

                  • 在vrrp的选举循环中的init位置

              • interface eth0

                • 承载VIP的网卡,以自己为准

              • virtual_router_id 51

                • 每一个实例都必须用相同的VRID才能加入到同一个热备组。

              • priority 100

                • 因为VRRP采用优先级做选举master依据范围(0~255)0保留,255(IP地址拥有者)

              • advert_int 1

                • master的宣告报文间隔,以秒为单位(告诉其他backup)master还活着。

              • authentication {

                • 当其他的实例想要加入该热备组需要进行密码认证。

              • auth_type PASS

              • auth_pass 1111

              • }

              • virtual_ipaddress {

                • 虚拟VIP地址:每一个虚拟vip就代表着一个群集

              • 192.168.200.16

              • 192.168.200.17

              • 192.168.200.18

              • }

              • }

            • 虚拟服务器部分

              • virtual_server 192.168.200.100 443 {

                • 与实例中的VIP对应,是一个群集的开始

              • delay_loop 6

                • 健康检查的时间间隔

              • lb_algo rr

                • 调度算法

                  • rr|wrr|lc|wlc|lblc|sh|dh 

              • lb_kind NAT

                • 工作模式

                  • DR TUN NET

              • persistence_timeout 50

                • 持久超时(会话保持,在50秒内来自同一个IP的请求会被转发到同一个服务器上)

              • protocol TCP

                • 健康检查用的协议

              • real_server 192.168.201.100 443 {

                • 后端真实服务器的IP地址以及端口

              • weight 1

                • 该真实服务器的权重

              • SSL_GET {

                • 健康检查的方法

                  • 5:SMTP_CHECK:用来检测邮件服务的smtp的
              • url {

              • path /

              • digest ff20ad2481f97b1754ef3e12ecd3a9cc

              • }

              • url {

              • path /mrtg/

              • digest 9b3a0c85a887a256d6939da88aabd8cd

              • }

              • connect_port 80

                • 健康检查的端口

              • connect_timeout 3

                • 健康检查的连接超时时间

              • nb_get_retry 3

                • 超时后重试的次数

              • delay_before_retry 3

                • 重试次数之间的间隔

              • }

              • }

              • }

          • 配置文件中需要改动的地方

            • #vrrp_strict

              • 将不允许单播注释

            • 根据需要可以设为不同的标识

              • router_id LVS_01

            • state MASTER

              • 根据拓扑需求设置为不同的角色

            • interface ens33

              • 根据实际需要选择合适的网卡承载VIP

            • virtual_router_id 51

              • 确保同一个热备组中的实例的id一致

            • priority 100

              • 优先级越高越优先

            • virtual_ipaddress { 192.168.10.172 }

              • 选择虚拟ip

            • virtual_server 192.168.10.172 80 { delay_loop 6 lb_algo rr lb_kind DR nat_mask 255.255.255.0 ! persistence_timeout 50 protocol TCP real_server 192.168.10.103 80 { weight 1 TCP_CHECK { connect_port 80 connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } }

              • 修改成合适的IP地址,选择健康检查方式,将会话保持功能关闭方便后期测试。

          • 在调度器内核中加入相关参数

            • net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.default.send_redirects = 0 net.ipv4.conf.ens33.send_redirects = 0

              • 关闭内核的重定向功能,

          • 最后开启keepalived

          • 从服务器也要进行相关设置

          • web服务器处理

            • 两台服务器分别用lo:0去承载VIP,并且在内核中添加相关参数。

              • net.ipv4.conf.all.arp_ignore = 1 net.ipv4.conf.all.arp_announce = 2 net.ipv4.conf.default.arp_ignore = 1 net.ipv4.conf.default.arp_announce = 2 net.ipv4.conf.lo.arp_ignore = 1 net.ipv4.conf.lo.arp_announce = 2

            • 最后在web网页文档目录下设置相关参数进行测试,分别down掉调度器与web服务器看是否能正常访问。

复制全部到xmind即可形成条理性笔记,图片复制不过去请单独粘贴! 


原文地址:https://blog.csdn.net/Q7758521adc/article/details/140209725

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!