Docker 环境下部署高可用集群实践
Docker 基本用法1.安装 dockeryum -y updateyum install -y docker2.启动 / 关闭 / 重启 dockerservice docker start / systemctl start dockerservice docker stop / systemctl stop dockerservice docker restart / sy...
Docker 基本用法
1.安装 docker
yum -y update
yum install -y docker
2.启动 / 关闭 / 重启 docker
service docker start / systemctl start docker
service docker stop / systemctl stop docker
service docker restart / systemctl restart docker
ps:我本地机器用第二个命令启动成功的。
3.配置docker镜像加速器
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io #linux
http://f1361db2.m.daocloud.io #macOs
http://f1361db2.m.daocloud.io #Windows
ps:设置如果报错,去配置文件修改,去掉最后的一个逗号,路径vim /etc/docker/daemon.json
, 修改配置完,最好重启docker,以避免不必要的错误。
如果是添加阿里云docker的加速器,开通加速服务在配置项里找到对应的命令,
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://lgltjulp.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
4.查找并安装镜像
docker search java #查找镜像
docker pull docker.io/java #安装你需要的镜像
5.查看docker中已经安装的镜像
docker images
6.导入和导出镜像
docker save docker.io/java > /home/docker/java.tar.gz #导出docker镜像
docker load < /home/docker/java.tar.gz 导入docker镜像
docker images
docker rmi java
7.启动容器
docker run -it docker.io/java bash
-p 9000:8080 -p 9001:8085 # -p 映射宿主机和虚拟机的端口
-v /home/project:/soft #-v 映射宿主机和虚拟机的文件夹
--privileged 目录权限
--name myjava
docker run -it -p 9000:8080 -p 9001:8085 -v /home/project:/soft --privileged --name myjava docker.io/java bash
8.暂停和停止容器
docker pause myjava # 暂停容器
docker unpause myjava #恢复容器的运行
docker stop myjava #暂停容器
docker start -i myjava #重启
9.查看运行的容器
docker ps -a
docker run -it -p 9000:8080 -p 9001:8085 -v /home/project:/soft --privileged --name myjava docker.io/java bash
Mysql PXC集群环境部署
PXC集群特点:
- 同步复制,事务在所有的集群节点要么同时提交,要么同时不提交
- Replication采用异步复制,无法保证数据的一致性
1.下载镜像
docker pull percona/percona-xtradb-cluster
2.出于安全考虑,需要给pxc集群实例创建docker内部网络
docker network create --subnet=172.20.1.0/24 net1
docker network inspect net1
docker network rm net1
ps:阿里云服务器没有成功???!!中间遇到了一个小问题,Error response from daemon
, 这个是因为172.18 的网段已经存在,可以docker network ls
查看,换一个网段就解决了
3.创建docker卷
docker volume create --name v1
docker volume create --name v2
docker volume create --name v3
docker volume create --name v4
docker volume create --name v5
4.查看docker卷信息
docker inspect v1
#创建第一个节点
docker run -d -p 3310:3306 -e MYSQL_ROOT_PASSWORD=123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=123456 --name=node1 --net=net1 --ip 172.20.1.2 pxc
#创建第二个节点
docker run -d -p 3311:3306 -e MYSQL_ROOT_PASSWORD=123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=123456 -e CLUSTER_JOIN=node1 --name=node2 --net=net1 --ip 172.20.1.3 pxc
#创建第三个节点
docker run -d -p 3315:3306 -e MYSQL_ROOT_PASSWORD=123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=123456 -e CLUSTER_JOIN=node1 --name=node3 --net=net1 --ip 172.20.1.7 pxc
#创建第四个节点
docker run -d -p 3313:3306 -e MYSQL_ROOT_PASSWORD=123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=123456 -e CLUSTER_JOIN=node1 --name=node4 --net=net1 --ip 172.20.1.5 pxc
#创建第五个节点
docker run -d -p 3314:3306 -e MYSQL_ROOT_PASSWORD=123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=123456 -e CLUSTER_JOIN=node1 --name=node5 --net=net1 --ip 172.20.1.6 pxc
ps:在这个地方又遇到了个问题,创建了5个node节点,但是只启动了2个,3个失败???暂时还不知道原因???启动的状态都为Exited???!!
docker ps -aq | xargs -I {} docker start {}
使用这句命令启动了
5.mysql的负载均衡haproxy
docker pull haproxy
6.实例化haproxy
docker run -it -d -p 4001:8888 -p 4002:3306 -v /home/soft/haproxy:/usr/local/etc/haproxy --name h1 --privileged --net=net1 --ip 172.20.1.10 haproxy
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:abc123456
#数据库负载均衡
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 MySQL_1 172.20.1.2:3306 check weight 1 maxconn 2000
server MySQL_2 172.20.1.3:3306 check weight 1 maxconn 2000
server MySQL_3 172.20.1.7:3306 check weight 1 maxconn 2000
server MySQL_4 172.20.1.5:3306 check weight 1 maxconn 2000
server MySQL_5 172.20.1.6:3306 check weight 1 maxconn 2000
#使用keepalive检测死链
option tcpka
7.登陆到交互容器里
docker exec -it h1 bash
8.安装keepalive 完成双机热备,登录haproxy,执行命令
apt-get update
apt-get install keepalived
9.配置keepalive,
#创建第2个Haproxy负载均衡服务器
docker run -it -d -p 4003:8888 -p 4004:3306 -v /home/soft/haproxy:/usr/local/etc/haproxy --name h2 --privileged --net=net1 --ip 172.20.1.10 haproxy
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
172.20.1.201
}
}
#启动Keepalived
service keepalived start
#宿主机执行ping命令
ping 172.20.1.201
#创建第2个Haproxy负载均衡服务器
docker run -it -d -p 4003:8888 -p 4004:3306 -v /home/soft/haproxy:/usr/local/etc/haproxy --name h2 --privileged --net=net1 --ip 172.20.1.11 haproxy
#进入h2容器,启动Haproxy
docker exec -it h2 bash
haproxy -f /usr/local/etc/haproxy/haproxy.cfg
配置RedisCluster集群
1.下载docker 中的 redis镜像
docker pull docker.io/grokzen/redis-cluster
2.创建net2网段(docker中的redis网段)
docker network create --subnet=172.21.1.0/24 net2
3.创建redis node节点
docker run -it -d --name r1 -p 5001:6379 --net=net2 --ip 172.21.1.2 redis bash
docker run -it -d --name r2 -p 5002:6379 --net=net2 --ip 172.21.1.3 redis bash
docker run -it -d --name r3 -p 5003:6379 --net=net2 --ip 172.21.1.4 redis bash
docker run -it -d --name r4 -p 5004:6379 --net=net2 --ip 172.21.1.5 redis bash
docker run -it -d --name r5 -p 5005:6379 --net=net2 --ip 172.21.1.6 redis bash
docker run -it -d --name r6 -p 5006:6379 --net=net2 --ip 172.21.1.7 redis bash
4.编辑redis配置文件
daemonize yes
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 15000
appendonly yes
#进入r1节点
docker exec -it r1 bash
cp /home/redis/redis.conf /usr/redis/redis.conf
cd /usr/redis/src
./redis-server ../redis.conf
5.创建Redis集群工具
./redis-trib.rb create --replicas 1 172.21.1.2:6379 172.21.1.3:6379 172.21.1.4:6379 172.21.1.5:6379 172.21.1.6:6379 172.21.1.7:6379
更多推荐
所有评论(0)