美文网首页IT技术篇
【4.3.1】服务器安装 Docker Swarm中搭建 PX

【4.3.1】服务器安装 Docker Swarm中搭建 PX

作者: 王滕辉 | 来源:发表于2021-07-20 14:52 被阅读0次

    https://www.jianshu.com/p/a3dba4d4aff5

    (一) docker pxc 搭建

    # 新建文件夹并赋予权限
    mkdir -p /home/log
    mkdir -p /home/data
    mkdir -p /home/mysql-files
    mkdir -p /home/backup
    chmod 755 /home/log
    chmod 755 /home/data
    chmod 755 /home/mysql-files
    chmod 755 /home/backup
    
    # images 
    docker pull percona/percona-xtradb-cluster
    
    # 创建网络
    docker network create -d  overlay --attachable swarm_test
    # 查看 网络ip
    docker network inspect swarm_test
    
    #  创建第一个节点
    docker run -d -p 3506:3306 --ip 10.0.3.2 -e MYSQL_ROOT_PASSWORD=admin -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=admin  -v /home/data:/var/lib/mysql  --privileged --name=node1 --net=swarm_test  pxc
    
    # 重新创建第二个节点,加入配置路径
    docker rm -f node2
    docker run -d -p 3506:3306 --ip 10.0.3.3 -e MYSQL_ROOT_PASSWORD=admin -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=admin -e CLUSTER_JOIN=node1 -v /home/backup:/data -v /home/data:/var/lib/mysql -v /home/log:/var/log/mysql  -v /home/mysql-files:/var/lib/mysql-files  --privileged --name=node2 --net=swarm_test  pxc
    
    # 重新创建第三个节点,加入配置路径
    docker rm -f node3
    docker run -d -p 3606:3306 --ip 10.0.3.4 -e MYSQL_ROOT_PASSWORD=admin -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=admin -e CLUSTER_JOIN=node2 -v /home/backup:/data -v /home/data:/var/lib/mysql -v /home/log:/var/log/mysql  -v /home/mysql-files:/var/lib/mysql-files  --privileged --name=node3 --net=swarm_test  pxc
    
    # 最后一次重新创建一遍把配置文件加进去 加入到第三个节点后面
    docker rm -f node1
    docker run -d -p 3506:3306 --ip 10.0.3.2 -e MYSQL_ROOT_PASSWORD=admin -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=admin -e CLUSTER_JOIN=node3 -v /home/backup:/data -v /home/data:/var/lib/mysql -v /home/log:/var/log/mysql  -v /home/mysql-files:/var/lib/mysql-files  --privileged --name=node1 --net=swarm_test  pxc
    # node1 > node2 >node3 > node1 
    
    # 机房断电后,查看所有的mysql服务器,找到具有最高seqno的节点,把safe_to_boostrap的值改为1
    [root@mysql3 ~]# cat  /home/data/mysql/grastate.dat 
    # GALERA saved state
    version: 2.1
    uuid:    a3b378ea-ce50-11eb-b624-0780367f3ddd
    seqno:   7
    safe_to_bootstrap: 1
    [root@mysql3 ~]# systemctl start mysql@bootstrap.service
    
    # 启动其他主机的mysql服务
    [root@mysql1 ~]# systemctl start mysql
    [root@mysql2 ~]# systemctl start mysql
    

    可以直接用navicat连接三个节点


    image.png

    (二) Haproxy

    # 下载2.3版本,最新版本有问题
    docker pull haproxy:2.3
    
    
    参考官网
    Create a dockerfile
    #Dockerfile
    FROM haproxy:2.3
    COPY haproxy.cfg /usr/local/etc/haproxy/haproxy.cfg
    
    Create a haproxy.cfg
    # haproxy.cfg
    global
        #工作目录
        chroot /usr/local/etc/haproxy
        #日志文件,使用rsyslog服务中local5日志设备(/var/log/local5),等级info
        log 127.0.0.1 local5 info
        #守护进程运行
        daemon
     
    defaults
        log    global
        mode    http
        #日志格式
        option    httplog
        #日志中不记录负载均衡的心跳检测记录
        option    dontlognull
        #连接超时(毫秒)
        timeout connect 5000
        #客户端超时(毫秒)
        timeout client  50000
        #服务器超时(毫秒)
        timeout server  50000
     
    #监控界面    
    listen  admin_stats
        #监控界面的访问的IP和端口
        bind  0.0.0.0:8888
        #访问协议
        mode        http
        #URI相对地址
        stats uri   /dbs
        #统计报告格式
        stats realm     Global\ statistics
        #登陆帐户信息
        stats auth  admin:123456
    #数据库负载均衡
    listen  proxy-mysql
        #访问的IP和端口
        bind  0.0.0.0:3306  
        #网络协议
        mode  tcp
        #负载均衡算法(轮询算法)
        #轮询算法:roundrobin
        #权重算法:static-rr
        #最少连接算法:leastconn
        #请求源IP算法:source 
        balance  roundrobin
        #日志格式
        option  tcplog
        #在MySQL中创建一个没有权限的haproxy用户,密码为空。Haproxy使用这个账户对MySQL数据库心跳检测
        option  mysql-check user haproxy
        server  node1 10.0.3.2:3306 check weight 1 maxconn 2000  
        server  node2 10.0.3.3:3306 check weight 1 maxconn 2000  
        server  node3 10.0.3.4:3306 check weight 1 maxconn 2000
        #使用keepalive检测死链
        option  tcpka
    
    

    在MySQL中创建一个没有权限的haproxy用户,密码为空。Haproxy使用这个账户对MySQL数据库心跳检测

    CREATE USER `haproxy`@`%` IDENTIFIED WITH mysql_native_password;
    
    Build the container
    # 创建新的images
    docker build -t haproxy-mysql .
    # 运行
    docker run -it -d -p 4001:8888 -p 4002:3306 -d --name haproxy -v /home/config:/usr/local/etc/haproxy:ro   --net=swarm_test  --ip 10.0.3.77  --privileged haproxy-mysql
    
    docker rm -f haproxy 
    docker run -it -d -p 4001:8888 -p 4002:3306 -d --name haproxy -v /home/config/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro   --net=swarm_test  --ip 10.0.3.77  --privileged haproxy-mysql
    
    

    访问地址 ip:4001/dbs admin/123456


    image.png

    navicat 连接 ip:4002 账号密码还是数据库密码

    image.png

    点波关注 系统搭建(docker)

    相关文章

      网友评论

        本文标题:【4.3.1】服务器安装 Docker Swarm中搭建 PX

        本文链接:https://www.haomeiwen.com/subject/mtzlmltx.html