docker 搭建服务器集群,nginx负载均衡集群nginx服务器集群,mysql集群,redis集群,mycat集群

7 篇文章 0 订阅
7 篇文章 0 订阅

1.环境准备

我做了一个导航站(域名是挂路灯的全拼gualudeng.com),里面精选了各种影视,动漫,黑科技,实用工具,搞笑有趣的站点,动动大家可爱的小手,点进来看看吧,良心站点。

准备两台云服务器
119.23.220.39   云服务器1
184.254.154.58  云服务器2

两台服务器交叉部署
服务器1 上部署一个nginx服务器,开放端口7771。
部署一个redis集群,一主一从。开放端口7772,7773。
部署一个mysql集群,一主一从。开放端口7774,7775。
部署一个mycat中间件端口 7776

服务器2 上部署两个nginx服务器集群,开放端口分别为7770,7771。
部署一个redis集群,一主一从。开放端口7772,7773。
部署两个mysql集群,一个双主一丛,一个一主一从。开放端口7774,7775,7776,7777,7778。
部署一个mycat中间件端口 7779.
最后部署一个nginx负载均衡服务器 端口7779
部署一个用于mycat负载均衡的服务武器 端口8000

2.目录结构

docker 文件目录结构

docker_cluster     #最外层目录
-- nginx           #nginx 服务器目录
  -- log           #容器日志映射文件夹
  -- sites         #服务器站点映射文件夹
  -- nginx.conf    #服务器主配置文件夹
  -- Dockerfile    #nginx 的镜像文件

-- balance_nginx   #负载均衡服务器文件夹
  -- log           #容器日志映射文件夹
  -- nginx.conf    #服务器主配置文件夹
  -- Dockerfile    #nginx 的镜像文件

-- mysql           #mysql集群文件夹
  -- mysql1        #节点1
    -- mysql_master         #主从复制主节点
      -- data               #数据目录
      -- Dockerfile         #独立的dockerfile文件
      -- my.conf            #配置文件
    -- mysql_master1        #主从复制主节点
      -- data               #数据目录
      -- Dockerfile         #独立的dockerfile文件
      -- my.conf            #配置文件
    -- mysql_slave          #从节点
      -- data               #数据目录
      -- Dockerfile         #独立的dockerfile文件
      -- my.conf            #配置文件
  -- musql2                 #集群中的第二个节点同上



docker_cluster/                                                            
├── app                                                                    
│                                                          
├── balance_nginx                                                          
│   ├── Dockerfile                                                         
│   ├── log                                                                                                                                                     
│   └── nginx.conf                                                         
├── docker-compose.yml                                                     
├── mycat                                                                  
│   ├── compose                                                            
│   │   ├── docker-compose.yml                                             
│   │   └── mycat                                                          
│   │       ├── Dockerfile                                                 
│   │       └── Mycat-server-1.6.5-release-20180122220033-linux.tar.gz     
│   ├── config                                                             
│   │   ├── mycat                                                                                        
│   │   │                                                                          
│   └── log                                                                
├── mysql                                                                  
│   ├── mysql1                                                             
│   │   ├── mysql_master                                                   
│   │   │   ├── data                                                       
│   │   │   ├── Dockerfile                                                 
│   │   │   └── my.cnf                                                     
│   │   ├── mysql_master1                                                  
│   │   │   ├── data                                                       
│   │   │   ├── Dockerfile                                                 
│   │   │   └── my.cnf                                                     
│   │   └── mysql_slave                                                    
│   │       ├── data                                                       
│   │       ├── Dockerfile                                                 
│   │       └── my.cnf                                                     
│   └── mysql2                                                             
│       ├── mysql_master                                                   
│       │   ├── data                                                       
│       │   ├── Dockerfile                                                 
│       │   └── my.cnf                                                     
│       └── mysql_slave                                                    
│           ├── data                                                       
│           ├── Dockerfile                                                 
│           └── my.cnf                                                     
└── nginx                                                                  
    ├── Dockerfile                                                         
    ├── log                                                                
    │   ├── access.log                                                     
    │   └── error.log                                                      
    ├── nginx.conf                                                         
    └── sites                                                              
        ├── confluence.conf.example                                        
        ├── default.conf                                                   
        ├── laravel.conf.example                                           
        ├── laravel_varnish.conf.example                                   
        └── symfony.conf.example                                           
                                                                           

3.搭建mysql集群。只能从主库同步到从库,反之不行。(安装mysql8.0会遇到各种各样的问题,现在已经把版本换为5.7了)

如果需要mycat的故障转移的话就要搭建双主双从的mysql集群,两个主机相互数据复制。然后每一个主机各自一个从机进行读写分离。

如下图:

运行docker-compose生成集群容器
然后用navicat连接各个节点,配置相关信息。
1.在master节点上添加从节点连接到主节点的用户信息
    CREATE USER 'fang'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
    mysql8.0 需要加上 WITH mysql_native_password
2.授权用户
    GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'fang'@'%';
3.show master status; 查看主节点信息,在配置从节点的时候需要用到
4.连接从节点配置主节点信息
    change master to master_host='192.168.33.10', master_user='fang',         master_password='123456', master_port=7774, master_log_file='mysql-bin.000003', master_log_pos= 679
    master_log_file和master_log_pos需要用到上面的主节点信息
5.启动主从复制
    start slave;
6.查看启动信息 show slave status;
    当 slave_io_running和slave_sql_running 都为yes时表示配置成功
    失败的话可以 reset slave ;然后重新第4步

7.帮助命令
    FLUSH PRIVILEGES;   show global VARIABLES like "server%"

下面时mycat的关键配置文件

主要的坑是要先在mysql中建好 mycat_db 数据库,才能启动mycat。需要定义好所有要使用的表,然后才能在mycat中创建成功。

还要注意设置 writeType=0 ,switchType=1,balance=1 

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">

	<schema name="mycat_db" checkSQLschema="false" sqlMaxLimit="100">
		<table  name="students" dataNode="m1,m2" rule="mod-long" />
	</schema>

	<dataNode name="m1" dataHost="host1" database="mycat_db" />
	<dataNode name="m2" dataHost="host2" database="mycat_db" />

	<dataHost name="host1" maxCon="1000" minCon="10" balance="1"
			  writeType="0" switchType="1" dbType="mysql" dbDriver="native" slaveThreshold="100">
		<heartbeat>select user()</heartbeat>
		<writeHost host="m1" url="192.168.33.10:7774" user="root" password="fangzq">
			<readHost host="s1" url="192.168.33.10:7776" user="root" password="fangzq" />
		</writeHost>

		<writeHost host="m2" url="192.168.33.10:7775" user="root" password="fangzq" />
	</dataHost>

	<dataHost name="host2" maxCon="1000" minCon="10" balance="1"
			  writeType="0" dbType="mysql" dbDriver="native" slaveThreshold="100">
		<heartbeat>select user()</heartbeat>
		<writeHost host="m1" url="192.168.33.10:7777" user="root" password="fangzq">
			<readHost host="s1" url="192.168.33.10:7778" user="root" password="fangzq" />
		</writeHost>
	</dataHost>

</mycat:schema>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值