docker - 搭建redis集群和Etcd
由于业务需要,需要把之前的分布式架构调整成微服务,把老项目迁移到k8s的服务中,再开始编码之前,需要再本地环境里做相应的准备工作,使用docker搭建redis集群,Etcd主要是注册本地的rpc服务。
概述
由于业务需要,需要把之前的分布式架构调整成微服务,把老项目迁移到k8s的服务中,再开始编码之前,需要再本地环境里做相应的准备工作,使用docker搭建redis集群,Etcd主要是注册本地的rpc服务。
Liunx OS : centos7
Redis :redis-5.0.6
安装Redis
1.安装 gcc 和 常用工具
yum -y install gcc automake autoconf libtool make wget curl git vim
2.redis官方releases版本地址,http://download.redis.io/releases/去下载你想安装的版本。
wget http://download.redis.io/releases/redis-5.0.6.tar.gz && tar zxf redis-5.0.6.tar.gz && cd redis-5.0.6
3.安装,PREFIX
指定的是安装目录
make && make install PREFIX=/usr/local/redis
配置redis集群
1.修改配置文件
把daemonize yes , 设置redis后台运行模式, bind 0.0.0.0,允许任何ip链接访问 ,cluster-enable yes 允许集成,cluster-config-file 如果不指定系统会默认生成配置文件。
cluster-enable yes
daemonize yes
bind 0.0.0.0
cluster-config-file nodes.conf
redis.conf 在安装包的根目录里,为了方便可以复制到redis安装目录里。
cp ~/redis-5.0.6/redis.conf /usr/local/redis/
先把配置好的容器打包成redis镜像,启动3个节点,分别是redis1,redis2,redis3
docker run -itd -p 7000:7000 -p 6309:6379 --name redis1 redis:node1
docker run -itd -p 7001:7001 -p 6319:6379 --name redis2 redis:node2
docker run -itd -p 7002:7002 -p 6329:6379 --name redis3 redis:node3
使用docker network ls
命令查看docker网络,使用docker network inspect bridge
,查看redis实例的具体ip,创建集群时使用,下面是我本地的IP
redis1 172.17.0.3
redis2 172.17.0.4
redis3 172.17.0.5
登陆到redis里,启动redis,查看进程,多出来一个[cluster]字段
[root@107e6ac2f51a /]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 11844 2944 pts/0 Ss+ Feb25 0:00 /bin/bash
root 77 0.0 0.1 63632 5216 ? Ssl Feb25 2:50 /usr/local/redis/bin/redis-server 0.0.0.0:6379 [cluster]
root 91 0.0 0.0 13444 3488 pts/1 Ss Feb25 0:00 bash
root 112 0.0 0.0 24872 3008 pts/1 S+ Feb26 0:00 ./redis-cli -c
root 113 0.0 0.0 13444 3356 pts/2 Ss 03:02 0:00 bash
root 132 0.0 0.0 53348 3880 pts/2 R+ 03:09 0:00 ps aux
登陆到其中一个的redis上,创建集群,使用自动分配槽操作,输入yes
./redis-cli --cluster create 172.17.0.3:6379 172.17.0.4:6379 172.17.0.5:6379 --cluster-replicas 0
查看node节点,使用CLUSTER NODES
命令查看具体信息,想了解更多命令可以使用CLUSTER HELP
,命令不区分大小写。
./redis-cli -c
3a7cd6396697e53652529458fe237ec0e665bbb6 172.17.0.5:6379@16379 master - 0 1677553881208 3 connected 10923-16383
08ab9df50129ddab8ea1db6ec7ce94508a4e881e 172.17.0.3:6379@16379 myself,master - 0 1677553879000 1 connected 0-5460
f621ea1704db7c7a1f86f2611fe54c2f19c88946 172.17.0.4:6379@16379 master - 0 1677553882226 2 connected 5461-10922
Etcd
Etcd是提供本地Rpc注册使用的服务,直接使用docker-compose安装即可,在网上找到一个很好用的docker-compose文件。
version: "3.5"
services:
etcd:
hostname: etcd
image: bitnami/etcd:latest
deploy:
replicas: 1
restart_policy:
condition: on-failure
privileged: true
volumes:
- "/Users/stark/server/data/etcd:/bitnami/etcd"# 注意这个目录容器要可写,不然会报cannot access data directory: open
environment:
- "ETCD_ADVERTISE_CLIENT_URLS=http://0.0.0.0:2379"
- "ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379"
- "ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380"
- "ETCD_INITIAL_ADVERTISE_PEER_URLS=http://0.0.0.0:2380"
- "ALLOW_NONE_AUTHENTICATION=yes" #参数指不用密码可以连接
- "ETCD_INITIAL_CLUSTER=node1=http://0.0.0.0:2380"
- "ETCD_NAME=node1"
- "ETCD_DATA_DIR=/opt/bitnami/etcd/data"
ports:
- 2379:2379
- 2380:2380
docker-composer启动以后,登陆到etcd容器里,使用etcdctl get --prefix ""
命令查看已经注册的rpc服务。
$ docker exec -it etcd_etcd_1 bash
I have no name!@etcd:/opt/bitnami/etcd$ etcdctl get --prefix ""
drama.rpc/112456478076358180
192.168.31.253:8899
至此,微服务需要的准备工作完成了。
更多推荐
所有评论(0)