Docker基础(五)搭建redis集群、应用集群

一 搭建一个zk单实例

测试环境可能会用到zk单实例,简单粗暴

docker run --name my-zookeeper -d -it -p 2181:2181 --restart always -e JVMFLAGS="-Xmx8096m" zookeeper:3.5.9

0 搭建 mysql 单实例

注意:生产上使用 容器化的MySQL 需要慎重.在测试环境中,这样搭最快了…

docker pull mysql 5.7.35
docker run --name xiaohe-mysql -e MYSQL_ROOT_PASSWORD=your-root -d -p 3306:3306 -v ~/mysql_data:/var/lib/mysql mysql:5.7.35  --character-set-server=utf8mb4 --log-bin=mysql-bin --binlog-format=ROW --server_id=1 

这里启动了一个MySQL实例, 数据放在了 ~/data 目录,然后暴露服务在 3306.同时打开了binlog .

做本地测试时,还需要简单的表,这里再给出一个DDL:

CREATE TABLE `teacher` (
  `id` bigint(20) NOT NULL,
  `name` varchar(45) NOT NULL,
  `sex` tinyint(4) NOT NULL,
  `flag` varchar(45) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4

一、搭建redis集群

第一步: 创建自定义的网络,名字叫 redis-net
docker network create redis-net --subnet 172.38.0.0/16

第二步:利用脚本,自动化创建配置文件  【注意这个脚本实现了一个批量创建文件、然后写入内容的功能,shell 还是挺犀利的】
for index in $(seq 1 6);
do
	mkdir -p /mydata/redis/node-${index}/conf
	touch /mydata/redis/node-${index}/conf/redis.conf
	cat <<EOF > /mydata/redis/node-${index}/conf/redis.conf
		port 6379
		bind 0.0.0.0
		cluster-enabled yes
		cluster-config-file nodes.conf
		cluster-node-timeout 5000
		cluster-announce-ip 172.38.0.1${index}
		cluster-announce-port 6379
		cluster-announce-bus-port 16379
		appendonly yes		
EOF
done

第三步: 拉起容器
for index in $(seq 1 6);
do
docker run -p 637${index}:6379 -p 1637${index}:16379 --name redis-${index} \
-v /mydata/redis/node-${index}:/data  \
-v /mydata/redis/node-${index}/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis-net --ip 172.38.0.1${index} redis redis-server /etc/redis/redis.conf 
done

第五步:进入任意一台容器,创建集群
[root@localhost home]# docker exec -it redis-1 /bin/bash
root@263467f705b2:/data# ls
appendonly.aof  conf  nodes.conf
root@263467f705b2:/data# redis-cli --cluster create 172.38.0.11:6379 172.38.0.12:6379 172.38.0.13:6379 172.38.0.14:6379 172.38.0.15:6379 172.38.0.16:6379 --cluster-replicas 1
>>> Performing hash slots allocation on 6 nodes...
.......

第六步:连接集群 【在其中一个容器内】
root@263467f705b2:/data# redis-cli -c
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0

二、搭建应用集群

1、写个Springboot demo (比如只有一个controller,只返回hello 字符串)
2、打包
打成一个 jar
在这里插入图片描述
3、写dockerfile
第一句: 表示使用 java8作为基础镜像

FROM java:8

WORKDIR /usr/app     
# COPY *.jar hello.jar
ADD hello-world-0.0.1-SNAPSHOT.jar app.jar
# CMD ["--server.port=8080"]

EXPOSE 8080

ENTRYPOINT ["java","-jar"]
CMD ["app.jar"]

4、打镜像

docker build -t xiaohe-hello . 

5、 run
6、测试

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值