zoukankan      html  css  js  c++  java
  • 集群

    Linux集群

    使用多台服务器搭建成一个集群来运行应用程序,不仅可以避免单点故障,还能提升服务器的承载能力

    集群从功能实现上分为两种:高可用集群和负载均衡集群

    高可用集群,当一台服务器宕机不能提供服务时,还有另外的服务器顶替

    负载均衡集群,把用户的请求分摊到多台服务器上

    搭建高可用集群

    高可用集群,即“HA集群”,也称作“双机热备”

    常见实现高可用的开源软件有heartbeat和keepalived

    keepalived工作原理

    VRRP协议,是实现路由高可用的一种通信协议,在这个协议里会将多台功能相同的路由器组成一个小组,这个小组里有一个master主机和n个backup备用机,工作时,master会通过组播的形式向各个backup发送VRRP协议的数据包,当backup收不到master发来的VRRP数据包时,就会认为master宕机了。

    keepalived就是采用VRRP协议实现的高可用。keepalived要有三个模块,分别是core、check和vrrp。其中core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析;check模块负责健康检查;vrrp模块用来实现VRRP协议

    实现Wed高可用

    VIP:虚拟ip,服务器靠这个ip对外提供服务,当master机器宕机时,VIP被分配到backup

    安装服务

    准备两台机器,一台master,一台backup

    在两台机器上安装keepalived和nginx服务

    # yum install -y keepalived

    # yum install -y epel-release

    # yum install -y nginx

    配置keepalived文件

    编辑master的配置文件

    # vi /etc/keepalived/keepalived.conf

    global_defs {

         notification_email {

         kei@keilinux.com       //定义接收告警的人
       }
       notification_email_from root@keilinux.com   //定义发邮件地址
       smtp_server 127.0.0.1    //定义发邮件地址,127.0.0.1为使用本机自带邮件服务器发送
       smtp_connect_timeout 30
       router_id LVS_DEVEL
    }
    vrrp_script kei_nginx {
        script "/usr/local/sbin/check_ng.sh"    //自定义脚本,该脚本为监控nginx服务的脚本
        interval 3    //每隔3s执行一次该脚本
    }
    vrrp_instance VI_1 {
        state MASTER      //角色为master
        interface ens33     //针对哪个网卡监听VIP
        virtual_router_id 51
        priority 100    //权重为100,master要比backup大
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass kei>com    //定义自定义密码
        }
        virtual_ipaddress {
            192.168.37.100     //定义VIP
        }
        track_script {
            kei_nginx     //定义监控脚本
        }
    }
    退出保存
     
    编辑backup的配置文件
    # vi /etc/keepalived/keepalived.conf

    global_defs {

       notification_email {
         kei@keilinux.com
       }
       notification_email_from root@keilinux.com
       smtp_server 127.0.0.1
       smtp_connect_timeout 30
       router_id LVS_DEVEL
    }
    vrrp_script kei_nginx {
        script "/usr/local/sbin/check_ng.sh"
        interval 3
    }
    vrrp_instance VI_1 {
        state BACKUP     //角色为backup
        interface ens33
        virtual_router_id 51
        priority 90     //比master数值小
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass kei>com
        }
        virtual_ipaddress {
            192.168.37.100
        }
        track_script {
            kei_nginx
        }
    }
    退出保存

    编辑监控脚本(此脚本两台机器配置一样)

    定义一个监控nginx服务的脚本
    # vi /usr/local/sbin/check_ng.sh

    d=`date --date today +%Y%m%d_%H:%M:%S`

    //时间变量,用于记录日志

    n=`ps -C nginx --no-heading|wc -l`

    计算nginx进程数量
    if [ $n -eq "0" ]; then
            systemctl start nginx
            n2=`ps -C nginx --no-heading|wc -l`
            if [ $n2 -eq "0" ]; then
                    echo "$d nginx down,keepalived will stop" >> /var/log/check_ng.log
                    systemctl stop keepalived
            fi
    fi
    //如果进程为0,则启动nginx,并再次检测进程数量
    //如果还为0,说明nginx无法启动,此时需要关闭keepalived

    其他配置(两台机器操作)

    给脚本权限

    # chmod a+x /usr/local/sbin/check_ng.sh

    启动keepalived

    # systemctl start keepalived

    查看状态

    在master机器上

    查看IP

    # ip addr

    查看nginx服务进程

    # ps aux |grep nginx

    验证高可用 

    先把master上的nginx关掉

    # systemctl stop nginx

     等3s再次检测端口,发现服务被启动

    模拟master宕机

    # iptables -I OUTPUT -p vrrp -j DROP 

    在backup机器上查看是否被设置VIP

     
     
     
     
  • 相关阅读:
    如何获取url访问历史记录
    js跨域总结
    setAttribute的兼容性
    js中原生对象、内置对象和宿主对象(转)
    一道变态的js题
    如何判断js是否加载完全
    深入理解viewport(转)
    webapp之路--理解viewport的使用
    zepto学习之路--源代码提取
    js正则之零宽断言
  • 原文地址:https://www.cnblogs.com/tui463/p/12450769.html
Copyright © 2011-2022 走看看