• gitlab+keepalived



    1. 192.168.1.247 节点01

      1.1 安装keepalived01

      ```bash
      root@ubuntu-server03:~# apt-cache search keepalived
      keepalived - Failover and monitoring daemon for LVS clusters
      root@ubuntu-server03:~# apt-cache policy keepalived
      keepalived:
        已安装: 1:1.2.7-1ubuntu1
        候选软件包:1:1.2.7-1ubuntu1
        版本列表:
          1:1.2.13-1~ubuntu14.04.1 0
          100 http://mirrors.163.com/ubuntu/ trusty-backports/main amd64 Packages
        *** 1:1.2.7-1ubuntu1 0
          500 http://mirrors.163.com/ubuntu/ trusty/main amd64 Packages
          100 /var/lib/dpkg/status
        root@ubuntu-server03:~# apt-get install -y keepalived
        root@ubuntu-server03:~# dpkg -l | grep keepalived
        ii keepalived 1:1.2.7-1ubuntu1 amd64 Failover and monitoring daemon for LVS clusters
        ```

    1.2 配置keepalived01

      ```bash
      root@ubuntu-server03:~# cat /etc/keepalived/keepalived.conf
      global_defs { #自由定义
      notification_email {
      xxxxx@mail.com
        }
      notification_email_from keepalived@chtopnet.com
      smtp_server 127.0.0.1
      smtp_connect_timeout 30
      router_id 51
        }

      vrrp_script chk_gitlab {
      script "/etc/keepalived/check_gitlab.sh" #定义一个监测脚本
      interval 2 #脚本执行频率(单位:s)
        }

      vrrp_script check_mysqld {
      script "/etc/keepalived/check_mysql.sh" #定义一个监测脚本
      interval 2
        }

      vrrp_instance VI_1 {
      state BACKUP #两个主机都写BACKUP即可
      nopreempt #非抢占模式,只需要在主设置即可
      interface em1 #绑定的网卡
      virtual_router_id 51 #两个主机id一致
      mcast_src_ip 192.168.1.247 #vrrp实体服务器的IP
      priority 100 #权重高于另一个即可
      advert_int 1
      authentication {
      auth_type PASS #验证方式
      auth_pass chtopnet
        }
      virtual_ipaddress {
      192.168.1.245/24 #虚拟IP  
        }
      track_script {
      check_mysqld #应用监测脚本
      chk_gitlab
        }
      }
      root@ubuntu-server03:~# service keepalived restat
      ```

    2. 192.168.1.248 节点02

      2.1 安装keepalived02

     安装步骤和keepalived01 一样

     2.3 配置keepalived02

     ```bash
     root@ubuntu-server04:~# cat /etc/keepalived/keepalived.conf
     global_defs {
     notification_email {
     xxxxx@mail.com
     }

     notification_email_from keepalived@chtopnet.com
     smtp_server 127.0.0.1
     smtp_connect_timeout 30
     router_id 51
     }

     vrrp_script chk_gitlab {
     script "/etc/keepalived/check_gitlab.sh"
     interval 2
     }
     vrrp_script check_mysqld {
     script "/etc/keepalived/check_mysql.sh"
     interval 2
     }

     vrrp_instance VI_1 {
     state BACKUP
     interface em1
     virtual_router_id 51
     mcast_src_ip 192.168.1.248
     priority 99
     advert_int 1
     authentication {
     auth_type PASS
     auth_pass chtopnet
     }
     virtual_ipaddress {
     192.168.1.245/24
     }
     track_script {
     check_mysqld
     chk_gitlab
     }
    }
    root@ubuntu-server04:~# service keepalived restat
    ```

    3. 监测脚本

    check\_gitlab.sh

    ```bash
    root@ubuntu-server03:~# cat /etc/keepalived/check_gitlab.sh
    #!/bin/bash

    container_state=`docker ps -a | grep gitlabnew_boxfish-gitlab | awk '{print $1}' | xargs docker inspect --format='{{.State.Status}}'`

    if [ ${container_state} = "running" ]; then
      exit 0
    else
      exit 1
    fi
    ```

    check\_gitlab.sh

    ```bash
    root@ubuntu-server04:~# cat /etc/keepalived/check_mysql.sh
    #!/bin/bash
    Mysqlbin=/usr/bin/mysql
    user=root
    pw='boxfish123'
    port=3306
    host=127.0.0.1
    sbm=120

    #Check for $Mysqlbin
    if [ ! -f $Mysqlbin ];then
      echo 'Mysqlbin not found,check the variable Mysqlbin'
      exit 99
    fi

    #Get Mysql Slave Status
    IOThread=`$Mysqlbin -h $host -P $port -u$user -p$pw -e 'show slave statusG' 2>/dev/null|grep 'Slave_IO_Running:'|awk '{print $NF}'`
    SQLThread=`$Mysqlbin -h $host -P $port -u$user -p$pw -e 'show slave statusG' 2>/dev/null|grep 'Slave_SQL_Running:'|awk '{print $NF}'`
    SBM=`$Mysqlbin -h $host -P $port -u$user -p$pw -e 'show slave statusG' 2>/dev/null|grep 'Seconds_Behind_Master:'|awk '{print $NF}'`

    #Check if the mysql run
    if [[ -z "$IOThread" ]];then
      exit 1
    fi

    #Check if the thread run
    if [[ "$IOThread" = "No" || "$SQLThread" = "No" ]];then
      exit 1
    elif [[ $SBM -ge $sbm ]];then
      exit 1
    else
      exit 0
    fi
    ```

    努力到无能为力,拼搏到感动自己。
  • 相关阅读:
    jenkins 项目部署方式二
    java 消息机制 ActiveMQ入门实例
    图片验证码大全
    Java列表分页查询结果导出到CSV文件,导入CSV文件并解析
    PHP之数组array
    JDK运行.Jar文件的控制台命令是什么
    ireport开发报表,Java和JSP端如何集成
    java Map及Map.Entry详解
    MFC
    Syms函数
  • 原文地址:https://www.cnblogs.com/jin-yuana/p/9791883.html
Copyright © 2020-2023  润新知