环境说明:
虚拟机centos7安装中安装docker
1.设置阿里云仓库,下载速度会快很多
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
2.安装docker
yum install docker-ce
3.启动docker
[root@localhost ~]# systemctl start docker
[root@localhost ~]# systemctl enable docker
4.查看docker
docker version
redis集群搭建:
1.创建目录用于存放脚本
/usr/local/redis-cluster
2.在redis-cluster目录新建redis-cluster.tmpl文件
vim redis-cluster.tmpl
输入一下内容,下面内容中的${PORT}用于批量生成配置【envsubst】
#端口
port ${PORT}
#非保护模式
protected-mode no
#启用集群模式
cluster-enabled yes
##节点配置 记录各个了节点信息
cluster-config-file nodes.conf
#超时时间
cluster-node-timeout 5000
#宿主机地址
cluster-announce-ip 192.168.0.106
#端口号
cluster-announce-port ${PORT}
#总线端口号
cluster-announce-bus-port 1${PORT}
appendonly yes
#后台运行
#daemonize yes
pidfile /var/run/redis_${PORT}.pid
#redis的认证密码
masterauth a123456
requirepass a123456
3.在redis-cluster目录新建redis.sh脚本
redis.sh
并输入一下内容
#!/bin/bash
#在/usr/local/redis-cluster下生成conf和data目标,并生成redis.conf配置信息
for port in `seq 6000 6005`;
do
mkdir -p ./${port}/conf && PORT=${port} envsubst < ./redis-cluster.tmpl > ./${port}/conf/redis.conf && mkdir -p ./${port}/data;
done
#循环创建6个redis-xxx[6000-6005]容器
for port in `seq 6000 6005`;
do
docker run -d -it -p ${port}:${port} -p 1${port}:1${port} -v /usr/local/redis-cluster/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf -v /usr/local/redis-cluster/${port}/data:/data --restart always --name redis-${port} --net redis-net --sysctl net.core.somaxconn=1024 redis redis-server /usr/local/etc/redis/redis.conf;
done
注:
Envsubst用shell格式字符串中的值替换环境变量。要替换的变量应位于
${var}
或$var
格式。
4.在redis-cluster目录新建stop.sh脚本 用于批量停止daokcer容器并删除对应的容器以及目录
vim stop.sh
输入内容如下:
#!/bin/bash
docker stop
redis-6000
redis-6001
redis-6002
redis-6003
redis-6004
redis-6005
docker rm
redis-6000
redis-6001
redis-6002
redis-6003
redis-6004
redis-6005
rm -rf
6000 6001 6002 6003 6004 6005
5. 给redis.sh和stop.sh授权
chmod 755 redis.sh stop.sh
6.新建docker子网用于redis集群间通信
docker network create redis-net
7.在redis-cluster下执行./redis.sh
结果如下,生成了对应的目录和文件
[root@localhost redis-cluster]# ll
total 12
drwxr-xr-x. 4 root root 30 Dec 17 11:50 6000
drwxr-xr-x. 4 root root 30 Dec 17 11:50 6001
drwxr-xr-x. 4 root root 30 Dec 17 11:50 6002
drwxr-xr-x. 4 root root 30 Dec 17 11:50 6003
drwxr-xr-x. 4 root root 30 Dec 17 11:50 6004
drwxr-xr-x. 4 root root 30 Dec 17 11:50 6005
-rw-r--r--. 1 root root 402 Dec 17 11:33 redis-cluster.tmpl
-rwxr-xr-x. 1 root root 1087 Dec 17 11:46 redis.sh
-rwxr-xr-x. 1 root root 191 Dec 17 11:47 stop.sh
8.查看子网
docker network inspect redis-net
结果如下:
9.执行redis集群操作,中间出现输入Can I set the above configuration? (type 'yes' to accept): yes
redis-cli --cluster create 172.18.0.2:6000 172.18.0.3:6001 172.18.0.4:6002 172.18.0.5:6003 172.18.0.6:6004 172.18.0.7:6005 -a a123456 --cluster-replicas 1
执行结果如下,出现红框中的信息说明成功了:
10.进入一个容器中
docker exec -it redis-6000 bash
11.连接redis查看集群信息
redis-cli -a a123456 -c -h 192.168.0.106 -p 6000
集群结果如下,三主三从[6000,6001,6002是主节点]:
12.使用redis客户端进行连接
关闭防火墙:
systemctl stop firewalld service
连接示例:
13.容灾演示
停掉主节点6002【docker stop e8889e9f41db】
在查看节点信息,可以看到6003升级为主节点了
再次启动6002节点 可以看到该节点已经变成了从节点【docker start e8889e9f41db】
14.dockerUI的使用
docker pull uifd/ui-for-docker ##拉取
docker run -it -d --name docker-ui -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock docker.io/uifd/ui-for-docker##启动
访问http://192.168.0.106:9000/,可以使用图形化进行容器管理