Linux企业化运维
实验所用系统为Redhat-rhel7.6。
目录
Linux企业化运维–(8)codis安装配置
一、简介
Codis 是一个分布式 Redis 解决方案, 对于上层的应用来说, 连接到 Codis Proxy 和连接原生的 Redis Server 没有明显的区别 (不支持的命令列表), 上层应用可以像使用单机的 Redis 一样使用, Codis 底层会处理请求的转发, 不停机的数据迁移等工作, 所有后边的一切事情, 对于前面的客户端来说是透明的, 可以简单的认为后边连接的是一个内存无限大的 Redis 服务。
特点:
自动平衡
使用非常简单
图形化的面板和管理工具
支持绝大多数 Redis 命令,完全兼容twemproxy
支持 Redis 原生客户端
安全而且透明的数据移植,可根据需要轻松添加和删除节点
提供命令行接口
RESTful APIs
组成部分:
Codis Proxy (codis-proxy)
Codis Manager (codis-config)
Codis Redis (codis-server)
ZooKeeper
codis-proxy
是客户端连接的 Redis 代理服务, codis-proxy 本身实现了 Redis 协议, 表现得和一个原生的 Redis 没什么区别 (就像 Twemproxy), 对于一个业务来说, 可以部署多个 codis-proxy, codis-proxy 本身是无状态。
codis-config
是 Codis 的管理工具, 支持包括, 添加/删除 Redis 节点, 添加/删除 Proxy 节点, 发起数据迁移等操作. codis-config 本身还自带了一个 http server, 会启动一个 dashboard, 用户可以直接在浏览器上观察 Codis 集群的运行状态。
codis-server
是 Codis 项目维护的一个 Redis 分支, 基于 2.8.13 开发, 加入了 slot 的支持和原子的数据迁移指令. Codis 上层的 codis-proxy 和 codis-config 只能和这个版本的 Redis 交互才能正常运行。
Codis 依赖 ZooKeeper
来存放数据路由表和 codis-proxy 节点的元信息, codis-config 发起的命令都会通过 ZooKeeper 同步到各个存活的 codis-proxy。
二、安装部署go和codis
1、下载
现在真机下载go
和codis
的安装包,并复制至虚拟机server1。
wget https://storage.googleapis.com/golang/go1.8.3.linux-amd64.tar.gz --no-check-certificate
scp go1.8.3.linux-amd64.tar.gz server1:
https://codeload.github.com/CodisLabs/codis/zip/release3.2 ##codis安装网址
mv /home/westos/Downloads/codis-release3.2.zip .
scp codis-release3.2.zip server1:
2、部署go
[注意] 部署codis时,需要将redis关闭。/etc/init.d/redis_6379 stop
codis集群的搭建需要在go环境下。
安装go环境,并解压到用户级程序安装目录/usr/local
下。修改环境变量,并生效。最后go version
检测go环境是否完成。
###server1
ls ##go1.8.3.linux-amd64.tar.gz
cd /usr/local/
tar zxf /root/go1.8.3.linux-amd64.tar.gz
ls ##go
vim .bash_profile
///
PATH=$PATH:$HOME/bin:/usr/local/go/bin/
///
source .bash_profile
go version ##检测 go version go1.8.3 linux/amd64
3、安装codis
将codis
安装在go目录下,先新建目录,解压并重命名,然后make
。
###server1
mkdir -p /usr/local/go/src/github.com/CodisLabs ##创建目录
cd /usr/local/go/src/github.com/CodisLabs
mv /root/codis-release3.2.zip .
unzip codis-release3.2.zip ##解压
ls
mv codis-release3.2 codis
cd codis/
ls
make
make
成功。
4、启动codis-dashboard
使用 codis-dashboard-admin.sh
脚本启动 dashboard
,并查看 dashboard 日志确认启动是否有异常。
./admin/codis-dashboard-admin.sh start
cd log
vim codis-dashboard.log.2021-09-15 ##[INFO] fsclient - create /codis3/codis-demo/topom OK
5、启动codis-proxy
使用 codis-proxy-admin.sh
脚本启动 codis-proxy
,并查看 proxy 日志确认启动是否有异常。
./admin/codis-proxy-admin.sh start
vim log/codis-proxy.log.2021-09-15 ##proxy is working ...
6、启动codis-server
使用 codis-server-admin.sh
脚本启动 codis-server
,并查看 redis 日志确认启动是否有异常。
./admin/codis-server-admin.sh start
vim /tmp/redis_6379.log ##The server is now ready to accept connections on port 6379
7、启动codis-fe
使用 codis-fe-admin.sh
脚本启动 codis-fe
,并查看 fe 日志确认启动是否有异常。
./admin/codis-fe-admin.sh start
tail -100 ./log/codis-fe.log.2021-09-15
三、通过fe添加group
在浏览器访问集群管理页面172.25.24.1:9090
,选择刚搭建的集群 codis-demo
,在 Proxy
栏可看到已经启动的 Proxy,Group
栏为空是因为启动的 codis-server
并未加入到集群中,添加 NEW GROUP
,输入 1
,再点击 NEW GROUP
即可 添加 Codis Server,Add Server
行输入codis-server 地址127.0.0.1:6379
,添加到新建的 Group,点击 Add Server
。
四、通过fe初始化slot
新集群 slot
状态是 offline
,需要进行初始化,即就是将 1024 个 slot 分配到各个 group,初始化最快的方法可通过 fe 提供的 rebalance all slots
按钮来做。点击,完成集群搭建。
五、集群配置
1、添加两个Redis实例
分别添加6380
、6381
两个Redis实例。
cp config/redis.conf config/redis6380.conf
cp config/redis.conf config/redis6381.conf
修改配置文件,修改端口、pid文件名称,日志文件。然后启动新增的Redis实例。
vim config/redis6380.conf
///
84 port 6380
150 pidfile /tmp/redis_6380.pid
163 logfile "/tmp/redis_6380.log"
///
./bin/codis-server ./config/redis6380.conf ##启动新增的Redis实例
6381
相同配置。
2、在浏览器添加两个实例
刚添加进来的默认状态是NO:ONE
,点击小扳手即可。
[注意] 开启集群管理之后,只有6379可读可写,其余两个只有读权限