zoukankan      html  css  js  c++  java
  • 微服务学习实战笔记 3.1-系统部署篇-安装配置Consul

    一、本地单机安装Consul

    服务器安装及Docker安装参见:Docker安装 

    1. 下载二进制安装文件

    下载地址:https://www.consul.io/downloads.html

    #安装wget
    yum install wget
    
    #下载Consul
    wget https://releases.hashicorp.com/consul/1.8.0/consul_1.8.0_linux_amd64.zip
    

      

    2. 解压缩安装包

    unzip consul_1.8.0_linux_amd64.zip
    

      

    3. 解压之后将consul复制到我们的自定义文件目录中

    #创建目录
    mkdir /usr/local/consul_1.8
    
    #拷贝到新创建的目录中
    cp consul /usr/local/consul_1.8/consul
    
    #删除现在和解压后文件
    rm consul
    rm consul_1.8.0_linux_amd64.zip
    

      

    3. 启动服务和客户端

    参考资料:https://www.consul.io/docs/agent/basics.html

    为agent机器和server机器 同为 192.168.2.171 为例。

    #创建data、log目录
    mkdir /usr/local/consul_1.8/data
    mkdir /usr/local/consul_1.8/log
    
    
    #启动
    /usr/local/consul_1.8/consul agent -server -bootstrap-expect 1 -data-dir=/usr/local/consul_1.8/data/ -node=n1 -bind=192.168.2.171 -client=192.168.2.171 -ui

      -server 表示是server模式
      -bootstrap-expect=3 表示是集群中有3台服务器 bootstrap该模式node可以指定自己作为leader ,如果是非leader可不加该参数
      -data-dir=/tmp/consul 目录
      -node=n2 该服务器节点名
      -bind=127.0.0.1 节点绑定的ip
      -ui 非必须 webui的路径 用web来管理consul

     

               如下图启动成功。

                  打开浏览器访问 http://192.168.2.171:8500/  出现下图,启动成功。

     如果不能访问查看一下是否防火墙影响,Ctrl + C 退出Consul,关闭防火墙,再重新执行启动试试。

     

    二、本地单机配置Consul 开机自启动

    1. 创建服务脚本

     路径/usr/lib/systemd/system/,新建一个service命名为,consul.service

    cd /usr/lib/systemd/system/
    vi consul.service
    

      在vi编辑器,编写如下写脚本:

    [Unit]
    Description=ConsulServer
    After=network.target
        
    [Service]
    ExecStart=/usr/local/consul_1.8/consul.start.sh
    KillSignal=SIGTERM
        
    [Install]
    WantedBy=multi-user.target

    2. 创建启动脚本

        创建启动脚本文件

    cd /usr/local/consul_1.8/
    vi consul.start.sh
    

      写入启动脚本

    #!/bin/bash
    
    /usr/local/consul_1.8/consul agent -server -ui -bootstrap-expect=1 -node=192.168.2.171 -data-dir=/usr/local/consul_1.8/data/ -log-file=/usr/local/consul_1.8/log/consul_log-$(date +%Y-%m-%d--%H-%M) -client=192.168.2.171 -bind=192.168.2.171 -datacenter=dc1
    
    echo "consul startup"
    

      

    2. 尝试服务启动

    重新加载配置

    systemctl daemon-reload
    

     

    Consul 启动

    systemctl start consul
    

    查看服务状态

    systemctl status consul
    

    如果出现下图,服务启动成功。

    如果失败,这是因为用户没有权限,而导致无法执行。

    用命令chmod 修改一下.sh权限就可以了,这里的u 这里指文件所有者,+x 添加可执行权限,*.sh表示所有的sh文件。

    chmod u+x *.sh
    

      

    3. 设置开机自启动

    systemctl enable consul.service
    

      

     三、Docker部署Consul集群(本项目采用这种方式)

    部署到4个server,注意防火墙问题
    192.168.2.171 SERVER1
    192.168.2.172 SERVER2
    192.168.2.173 SERVER3
    192.168.2.174 SERVER4

    1、拉取consul镜像

    docker pull consul
    
    #验证镜像
    docker images 
    

      

    2、SERVER1上操作,server作为leader

    docker run -d --name consul1 -h=node1 --net=host -e CONSUL_BIND_INTERFACE=eth0 consul agent -server=true -client=0.0.0.0 -bind=192.168.2.171 -ui -bootstrap-expect=3

    # 参数说明
    --net=host:docker内部对于虚拟机的来说也是localhost 如果主机上的其他容器也使用--net=host,这将是一个很好的配置,它还会将代理暴露给直接在容器外部的主机上运行的进程
    -bind:这是给其他consul server来加入集群的ip
    -join:加入集群
    -client:使用此配置,Consul的客户端接口将绑定到网桥IP,并可供该网络上的其他容器使用,但不能在主机网络上使用。
    Consul还将接受-client=0.0.0.0绑定到所有接口的选项。
    -bootstrap-expect设置服务数量,当达到设定数量启动集群。
    -bind的这台机器成为leader
    -ui管理界面
    -h:设置node的名称,集群的服务器不能取同名的node名称
    CONSUL_BIND_INTERFACE:ifconfig查看,好像虚拟机的这个名称不一样,我的是eth0,还有叫ens33的。

    3、SERVER2、SERVER3、SERVER4上分别操作,加入集群

    docker run -d --name consul2 -h=node2 --net=host -e CONSUL_BIND_INTERFACE=eth0 consul agent -server=true -client=0.0.0.0 -join=192.168.2.171 -ui
    
    docker run -d --name consul3 -h=node3 --net=host -e CONSUL_BIND_INTERFACE=eth0 consul agent -server=true -client=0.0.0.0 -join=192.168.2.171 -ui
    
    docker run -d -v /consulconfig:/config/file --name consul4 -h=node4 --net=host -e CONSUL_BIND_INTERFACE=eth0 consul agent -config-dir=/config/file -server=false -client=0.0.0.0 -join=192.168.2.171 -ui

    打开浏览器访问 http://192.168.2.171:8500/  出现下图,成功。

    4、查看状态

    #查看投票状态
    docker exec -t consul1 consul operator raft list-peers 
    
    #查看集群成员 docker exec -t consul名称 consul members 
    docker exec -t consul1 consul members
    

    通过管理网站查看集群状态

    5、docker容器自动启动设置

    如果已经启动了则可以使用如下命令:

    docker update --restart=always 容器ID/容器Name
    

    在运行docker容器时可以加如下参数来保证每次docker服务重启后容器也自动重启:

    docker run --restart=always
    

    --restart具体参数值详细信息:

      no - 容器退出时,不重启容器;
      on-failure - 只有在非0状态退出时才从新启动容器;如果容器由于错误而退出,则将其重新启动,非零退出代码表示错误
      unless-stopped - 重新启动容器,除非明确停止容器或者 Docker 被停止或重新启动
      always -只要容器停止了,就重新启动

    相关资料

    .NET Core微服务之基于Consul实现服务治理    

    Consul部署多台Docker集群

    Docker命令详解(run篇) 

  • 相关阅读:
    linux命令df中df -h和df -i的区别
    linux系统df和du命令的区别
    Linux type命令的用法
    《DNS的正向反向解析》RHEL6
    《DNS服务缓存的建立》RHEL6
    《服务器的追踪与审计》RHEL6
    《LDAP服务器和客户端的加密认证》RHEL6——第二篇 运维工程师必考
    《ISCSI集中存储》RHEL6——CE
    《LDAP服务器的配置与客户端的测试》RHEL6——第一篇 运维工程师必考
    《RHEL6硬盘的分区和swap分区管理》——硬盘分区的大总结
  • 原文地址:https://www.cnblogs.com/liuxtj/p/13410697.html
Copyright © 2011-2022 走看看