zoukankan      html  css  js  c++  java
  • Consul 部署

    Consul 部署

    下载链接

    wget https://releases.hashicorp.com/consul/1.7.1/consul_1.7.1_linux_amd64.zip
    unzip consul_1.7.1_linux_amd64.zip
    cp consul /usr/bin
    vim /usr/lib/systemd/system/consul.service
    

    systemctl 管理

    [Unit]
    Description=consul
    Documentation=https://www.consul.io/docs/index.html
    Wants=network-online.target
    After=network-online.target
    [Service]
    PrivateTmp=true
    WorkingDirectory=/usr/bin/
    User=consul
    Group=consul
    ExecStart=/usr/bin/consul agent -config-dir=/etc/consul.d
    ExecStop=/usr/bin/consul leave
    ExecReload=/usr/bin/consul reload
    StandardOutput=journal
    StandardError=inherit
    [Install]
    WantedBy=multi-user.target
    

    配置文件

    mkdir /etc/consul.d
    mkdir /data/consul_data/script -p
    cd /etc/consul.d 
    vim server.json
    vim r_fat.json
    vim w_fat.json
    cd /data/consul_data/script
    vim check_mgr_r.sh
    

    server.json

    {  
     "server": true,
     "datacenter": "fat",
     "client_addr": "0.0.0.0",
     "advertise_addr":"10.10.10.64"
     "node_name": "fatmysql3",
     "bootstrap_expect": 2,
     "enable_syslog": false,
     "domain": "consul",
     "log_file": "/data/consul_data/consul_server.log",
     "enable_local_script_checks": true,
     "data_dir": "/data/consul_data",
     "recursors" : ["8.8.8.8"],
     "ports" : {
      "dns" : 53,
      "http": 8500,
      "server": 8300
     },
     "retry_join": [ "10.10.10.35","10.10.10.36","10.10.10.64" ]
    }	
    

    r_fat.json

    {
     "services":[
       {
         "ID": "fat_check_r1",
         "Name": "r_fat",
         "Tags": ["fat_read_3306"],
         "Address": "10.4.22.35",
         "Port": 3306,
         "check":
         {
           "args": ["/data/consul_data/script/check_mgr_r.sh","10.4.22.35","3306"],
           "interval": "1s",
           "timeout": "1s"
         }
       },
       
       {
         "ID": "fat_check_r2",
         "Name": "r_fat",
         "Tags": ["fat_read_3306"],
         "Address": "10.4.22.36",
         "Port": 3306,
         "check":
         {
           "args": ["/data/consul_data/script/check_mgr_r.sh","10.4.22.36","3306"],
           "interval": "1s",
           "timeout": "1s"
         }
       },
       
       {
         "ID": "fat_check_r3",
         "Name": "r_fat",
         "Tags": ["fat_read_3306"],
         "Address": "10.4.22.64",
         "Port": 3306,
         "check":
         {
           "args": ["/data/consul_data/script/check_mgr_r.sh","10.4.22.64","3306"],
           "interval": "1s",
           "timeout": "1s"
         }
    
       }
    ]
    }
    

    w_fat.json

    {
     "services":[
      {
      "ID": "fat_check_w1",
      "Name": "w_fat",
      "Tags": ["fat_write_3306"],
      "Address": "10.4.22.35",
      "Port": 3306,
      "check":
      {
       "args": ["/data/consul_data/script/check_mgr_w.sh","10.4.22.35","3306" ],
       "interval": "1s",
       "timeout": "1s"
      }
     },
     {
      "ID": "fat_check_w2",
      "Name": "w_fat",
      "Tags": ["fat_write_3306"],
      "Address": "10.4.22.36",
      "Port": 3306,
      "check":
      {
       "args": ["/data/consul_data/script/check_mgr_w.sh","10.4.22.36","3306" ],
       "interval": "1s",
       "timeout": "1s"
      }
     },
     {
      "ID": "fat_check_w3",
      "Name": "w_fat",
      "Tags": ["fat_write_3306"],
      "Address": "10.10.10.64",
      "Port": 3306,
      "check":
      {
       "args": ["/data/consul_data/script/check_mgr_w.sh","10.4.22.64","3306" ],
       "interval": "1s",
       "timeout": "1s"
      }
     }
     ]
    }
    

    check_mgr_r.sh

    #!/bin/bash
    host=$1
    port=$2
    user="monitor_status"
    passwod="monitor_status"
    comm="/usr/local/mysql/bin/mysql -u$user -h $host -P $port -p$passwod"
    value=`$comm -Nse "select 1"`
    primary_member=`$comm -Nse "select variable_value from performance_schema.global_status WHERE VARIABLE_NAME= 'group_replication_primary_member'"`
    server_uuid=`$comm -Nse "select variable_value from performance_schema.global_variables where VARIABLE_NAME='server_uuid';"`
    # 判断mysql是否存活
    if [ -z $value ]
    then
      echo "mysql $port is down....."
      exit 2
    fi
    # 判断节点状态
    node_state=`$comm -Nse "select MEMBER_STATE from performance_schema.replication_group_members where MEMBER_ID='$server_uuid'"`
    if [[ $node_state != "ONLINE" ]]
    then
      echo "MySQL $port state is not online...."
      exit 2
    fi
    # 判断是不是主节点
    if [[ $server_uuid != $primary_member ]]
    then
      echo "MySQL $port Instance is slave ........"
      exit 0
    else
      node_num=`$comm -Nse "select count(*) from performance_schema.replication_group_members"`
      # 判断如果没有任何从节点,主节点也注册从角色服务。
      if [ $node_num -eq 1 ]
      then
      echo "MySQL $port Instance is slave ........"
      exit 0
      else
      echo "MySQL $port Instance is master ........"
      exit 2
      fi
    fi 
    

    check_mgr_w.sh

    #!/bin/bash
    host=$1
    port=$2
    user="monitor_status"
    passwod="monitor_status"
    comm="/usr/local/mysql/bin/mysql -u$user -h $host -P $port -p$passwod"
    value=`$comm -Nse "select 1"`
    primary_member=`$comm -Nse "select variable_value from performance_schema.global_status WHERE VARIABLE_NAME= 'group_replication_primary_member'"`
    server_uuid=`$comm -Nse "select variable_value from performance_schema.global_variables where VARIABLE_NAME='server_uuid';"`
    # 判断mysql是否存活
    if [ -z $value ]
    then
      echo "mysql $port is down....."
      exit 2
    fi
    判断节点状态
    node_state=`$comm -Nse "select MEMBER_STATE from performance_schema.replication_group_members where MEMBER_ID='$server_uuid'"`
    if [ $node_state != "ONLINE" ]
    then
      echo "MySQL $port state is not online...."
      exit 2
    fi
    # 判断是不是主节点
    if [[ $server_uuid == $primary_member ]]
    then
      echo "MySQL $port Instance is master ........"
      exit 0
    else
      echo "MySQL $port Instance is slave ........"
      exit 2
    fi
    

    授权 否则启动报错:

    setcap 'CAP_NET_BIND_SERVICE=+ep' /usr/bin/consul
    

    测试

    dig @127.0.0.1 -p 53 r_fat.service.consul
    
  • 相关阅读:
    设计模式之-工厂方法模式
    设计模式之-简单工厂模式
    设计模式之-单例模式
    Ubuntu-18.04 下使用Nginx搭建高可用,高并发的asp.net core集群
    Ubuntu-18.04 下修改root用户密码,安装SSH服务,允许root用户远程登录,安装vsftp服务器
    ASP.NET Core 系列[1]:ASP.NET Core 初识
    .net core系列之《将.net core应用部署到Ubuntu》
    动态内存分配函数
    C++ sort()对结构体排序
    STL
  • 原文地址:https://www.cnblogs.com/carry00/p/13860412.html
Copyright © 2011-2022 走看看