zoukankan      html  css  js  c++  java
  • docker compose 搭建pxc集群,haproxy做负载均衡

    docker compose 搭建pxc集群

    yls
    2020/5/2

    1. 创建目录结构
    cd /usr/local/docker
    mkdir pxc
    cd pxc
    mkdir data master follower
    # 创建数据卷
    cd data
    mkdir v1 v2 v3
    # 设置权限
    chmod 777 v1 v2 v3
    
    1. 创建pxc集群的网络
    docker network create --subnet 192.168.5.1/24 pxc
    
    1. 创建master节点的docker-compose.yml文件
    version: '3'
    services:
      pxc1:
        image: pxc
        restart: always
        container_name: pxc1
        privileged: true
        ports:
          - 13306:3306
        environment:
          - MYSQL_ROOT_PASSWORD=root
          - CLUSTER_NAME=pxc
        volumes:
          - ../data/v1:/var/lib/mysql
          - ./etc/my.cnf:/etc/my.cnf
    
    networks:
      default:
        external:
          name: pxc
    
    
    1. 创建配置文件my.cnf
    [mysqld]
    skip-name-resolve
    max_allowed_packet= 20M 
    

    docker-compose up -d运行master节点
    通过docker network inspect pxc可以查看到master节点的ip为192.168.5.2

    1. 创建follower节点的docker-compose.yml文件
    version: '3'
    services:
      pxc2:
        image: pxc
        container_name: pxc2
        restart: always
        privileged: true
        ports:
        - 13307:3306
        environment:
          - MYSQL_ROOT_PASSWORD=root
          - CLUSTER_NAME=pxc
          - CLUSTER_JOIN=192.168.5.2
        volumes:
          - ../data/v2:/var/lib/mysql
          - ./etc/my.cnf:/etc/my.cnf
        networks:
          default:
            ipv4_address: 192.168.5.5
      pxc3:
        image: pxc
        container_name: pxc3
        restart: always
        privileged: true
        ports:
        - 13308:3306
        environment:
          - MYSQL_ROOT_PASSWORD=root
          - CLUSTER_NAME=pxc
          - CLUSTER_JOIN=192.168.5.2
        volumes:
          - ../data/v3:/var/lib/mysql
          - ./etc/my.cnf:/etc/my.cnf
        networks:
          default:
            ipv4_address: 192.168.5.4
    networks:
      default:
        external:
          name: pxc
    
    1. 创建follower配置文件my.cnf
    [mysqld]
    skip-name-resolve
    max_allowed_packet= 20M 
    

    docker-compose up -d运行follower节点

    1. 用客户端连接各个节点,测试是否都可以读写操作且读写数据一致

    若要重启master节点,修改v1/grastate.dat文件中的safe_to_bootstrap=1

    使用haproxy对集群做负载均衡

    1. 下载haproxy
      yum -y install haproxy
    2. 修改/etc/haproxy/haproxy.cfg文件,添加
    listen stats
        bind 0.0.0.0:1083
        mode http
        stats uri /stats
        stats auth admin:admin
    listen mysql-cluster
        bind 0.0.0.0:1082
        mode tcp
        balance roundrobin
        server db01 39.97.234.52:13306 check
        server db01 39.97.234.52:13307 check
        server db03 39.97.234.52:13308 check
    
    
    1. 启动haproxy
      systemctl start haproxy

    systemctl status haproxy 查看状态
    systemctl stop haproxy 停止
    systemctl restart haproxy 重启

    1. 访问http://ip:1083/stats,用户名:admin,密码:admin登录

    2. 使用mysql客户端连接ip:主机ip地址,port:1082查看是否负载均衡成功

  • 相关阅读:
    手写一个简易版的Vue-Router,包含VueRouter的基本功能
    Odoo14学习笔记(6) 报psycopg2.errors.UndefinedColumn问题解决办法
    Odoo14学习笔记(5) 通过onchange机制自动计算“工龄”
    Odoo14学习笔记(4) 通过计算字段Compute Field自动计算工龄
    Odoo14学习笔记(3) 使用_sql_constraints对字段做Unique约束
    Odoo14学习笔记(2) 创建一个新应用Application
    Odoo14学习笔记(1) 安装时报关系"ir_modul"不存在问题
    大叔学Spring Boot笔记(15)MyBatis-Plus中LambdaQueryWrapper的使用
    java 读取excel 神器easyPoi
    通过PROFINET实现S7-1200与CU320-2 PN S120通讯
  • 原文地址:https://www.cnblogs.com/yloved/p/12817212.html
Copyright © 2011-2022 走看看