厦门正规网站建设公司,南宁营销型网站,策划书格式,wordpress插件+七牛Redis Cluster集群模式容器化部署 安装Docker和docker-compose准备docker-compose文件准备Redis配置文件Linux内核参数优化启停Redis实例Redis集群搭建 环境准备#xff1a;
IP版本角色端口172.x.x.11RHEL 7.9master6379172.x.x.12RHEL 7.9master6379172.x.x.13RHEL 7.9maste… Redis Cluster集群模式容器化部署 安装Docker和docker-compose准备docker-compose文件准备Redis配置文件Linux内核参数优化启停Redis实例Redis集群搭建 环境准备
IP版本角色端口172.x.x.11RHEL 7.9master6379172.x.x.12RHEL 7.9master6379172.x.x.13RHEL 7.9master6379172.x.x.11RHEL 7.9replica6380172.x.x.12RHEL 7.9replica6380172.x.x.13RHEL 7.9replica6380
安装Docker和docker-compose
安装docker-ce
# 移除旧版本
sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine# 配置仓库
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
#官方源
#sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
#阿里云源
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo yum makecache fast# 检查可安装的版本
yum list docker-ce --showduplicates | sort -r# 安装指定版本
#sudo yum install docker-ce-VERSION_STRING docker-ce-cli-VERSION_STRING containerd.io docker-buildx-plugin docker-compose-plugin
yum install -y docker-ce-25.0.1 docker-ce-cli-25.0.1 containerd.io docker-buildx-plugin docker-compose-plugin# 启动
sudo systemctl enable docker
sudo systemctl start docker 配置阿里云镜像源:
cat /etc/docker/daemon.json EOF
{registry-mirrors : [https://b9pmyelo.mirror.aliyuncs.com]
}
EOFsudo systemctl restart dockerDocker社区版部署参见 https://docs.docker.com/engine/install/centos/https://gottdeskrieges.blog.csdn.net/article/details/113242029 安装docker-compose
curl -SL https://github.com/docker/compose/releases/download/v2.24.6/docker-compose-linux-x86_64 -o /usr/local/bin/docker-composechmod 755 /usr/local/bin/docker-compose参考https://docs.docker.com/compose/install/standalone/ 准备docker-compose文件 Redis版本7.2.4Redis安装路径/opt/docker-compose/redis 准备单台服务的compose文件每台服务器上部署两个Redis实例服务端口分别为6379和6380和一个redis exporter。容器网络采用仅主机模式。
version: 3services:redis-server-6379:image: redis:7.2.4network_mode: hostcontainer_name: redis-server-6379restart: unless-stopped#ports:# - 6379:6379environment:TZ: Asia/Shanghaicommand: [/6379/conf/redis.conf]volumes:- ./6379/conf/:/6379/conf/- ./6379/data/:/6379/data/redis-server-6380:image: redis:7.2.4network_mode: hostcontainer_name: redis-server-6380restart: unless-stopped#ports:# - 6380:6380environment:TZ: Asia/Shanghaicommand: [/6380/conf/redis.conf]volumes:- ./6380/conf/:/6380/conf/- ./6380/data/:/6380/data/ redis-exporter:image: oliver006/redis_exporternetwork_mode: hostrestart: unless-stoppedenvironment:TZ: Asia/ShanghaiREDIS_ADDR: redis://localhost:6379,redis://localhost:6380REDIS_USER: redis_monitorREDIS_PASSWORD: Monpass_xxxx# ports:# - 9121:9121准备Redis配置文件
本机创建目录结构并配置好redis.conf和users.acl文件。
mkdir -vp /opt/docker-compose/redis/6379/conf/
mkdir -vp /opt/docker-compose/redis/6379/data/mkdir -vp /opt/docker-compose/redis/6380/conf/
mkdir -vp /opt/docker-compose/redis/6380/data/主实例配置文件/opt/docker-compose/redis/6379/conf/redis.conf
bind 0.0.0.0
port 6379
timeout 3600
tcp-keepalive 300
loglevel notice
databases 16save 600 100
save 120 10000
save 7200 1dir /6379/data/
masteruser clusterrepl
masterauth Replpass_xxxxaclfile /6379/conf/users.acl
replica-read-only yescluster-announce-ip 172.x.x.11
cluster-announce-port 6379maxclients 10000
maxmemory 10gb
maxmemory-policy noevictionappendonly yes
appendfsync everysec
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mbcluster-enabled yes
cluster-config-file nodes-6379.conf
cluster-node-timeout 15000从实例配置文件/opt/docker-compose/redis/6380/conf/redis.conf
bind 0.0.0.0
port 6380
timeout 3600
tcp-keepalive 300
loglevel notice
databases 16save 600 100
save 120 10000
save 7200 1dir /6380/data/
masteruser clusterrepl
masterauth Replpass_xxxxaclfile /6380/conf/users.acl
replica-read-only yescluster-announce-ip 172.x.x.11
cluster-announce-port 6380maxclients 10000
maxmemory 10gb
maxmemory-policy noevictionappendonly yes
appendfsync everysec
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mbcluster-enabled yes
cluster-config-file nodes-6380.conf
cluster-node-timeout 15000在/6379/conf/和/6380/conf/下配置ACL文件定义好管理员用户、redis-exporter监控用户、主从同步用户、应用用户的相关权限。示例如下
user default off nopass * -all
user root on Rootpass_xxxx allkeys allchannels all
user redis_monitor on Monpass_xxxx client ping info config|get cluster|info slowlog latency memory select get scan xinfo type pfcount strlen llen scard zcard hlen xlen eval allkeys
user clusterrepl on Replpass_xxxx psync replconf ping
user appuser on Apppass_xxxx allkeys allchannels all -admin -dangerousLinux内核参数优化
修改Linux内核参数
sed -i /vm.overcommit_memory/d /etc/sysctl.conf
echo vm.overcommit_memory 1 /etc/sysctl.conf
echo net.core.somaxconn2048 /etc/sysctl.conf
sysctl -p禁用透明大页
cat EOF /etc/rc.d/rc.local
if test -f /sys/kernel/mm/transparent_hugepage/enabled; thenecho never /sys/kernel/mm/transparent_hugepage/enabled
fi
EOFchmod x /etc/rc.d/rc.local编辑/etc/security/limits.conf和/etc/security/limits.d/90-nproc.conf添加以下配置
* soft core unlimited
* hard core unlimited
* soft nofile 65536
* hard nofile 65536
* soft nproc 65536
* hard nproc 65536最后重启服务器生效。
启停Redis实例
修改文件权限
cd /opt/docker-compose/
chown -R polkitd:root redis/在docker-compose.yml文件所在路径下执行以下命令来启停单个节点上的两个REDIS实例。
#启动容器
cd /opt/docker-compose/redis docker-compose up -d#停止容器
cd /opt/docker-compose/redis docker-compose stopRedis集群搭建
将三台服务器上的6个实例搭建成一个三主三从的集群模式
docker exec -it redis-server-6379 redis-cli --user root -a PASSWORD \
--cluster create 172.x.x.11:6379 172.x.x.11:6380 172.x.x.12:6379 172.x.x.12:6380 172.x.x.13:6379 172.x.x.13:6380 \
--cluster-replicas 1 集群创建过程中输出信息如下 Performing hash slots allocation on 6 nodes...
Master[0] - Slots 0 - 5460
Master[1] - Slots 5461 - 10922
Master[2] - Slots 10923 - 16383
Adding replica 172.x.x.11:6380 to 172.x.x.11:6379
Adding replica 172.x.x.12:6380 to 172.x.x.12:6379
Adding replica 172.x.x.13:6380 to 172.x.x.13:6379Trying to optimize slaves allocation for anti-affinity
[WARNING] Some slaves are in the same host as their master
M: a12d5d8daf4f7ef18a490f8db4766d66736c51e5 172.x.x.11:6379slots:[0-5460] (5461 slots) master
M: 7e6923ec3063d0833b134c3e30012d3a6605884b 172.x.x.12:6379slots:[5461-10922] (5462 slots) master
M: aa89fb16d032f62d58ac13d0b29450580f5f6337 172.x.x.13:6379slots:[10923-16383] (5461 slots) master
S: 26bfdc8f75bf45870e77b392e077b52380833bd9 172.x.x.11:6380replicates a12d5d8daf4f7ef18a490f8db4766d66736c51e5
S: 025b9b7e1163a39c4fcb76c6c8cb53b4c5a6604a 172.x.x.12:6380replicates 7e6923ec3063d0833b134c3e30012d3a6605884b
S: 042b02321735a6995f474703adb8d73601fc1773 172.x.x.13:6380replicates aa89fb16d032f62d58ac13d0b29450580f5f6337
Can I set the above configuration? (type yes to accept): yesNodes configuration updatedAssign a different config epoch to each nodeSending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join Performing Cluster Check (using node 172.x.x.11:6379)
M: a12d5d8daf4f7ef18a490f8db4766d66736c51e5 172.x.x.11:6379slots:[0-5460] (5461 slots) master1 additional replica(s)
M: 7e6923ec3063d0833b134c3e30012d3a6605884b 172.x.x.12:6379slots:[5461-10922] (5462 slots) master1 additional replica(s)
S: 042b02321735a6995f474703adb8d73601fc1773 172.x.x.13:6380slots: (0 slots) slavereplicates aa89fb16d032f62d58ac13d0b29450580f5f6337
S: 025b9b7e1163a39c4fcb76c6c8cb53b4c5a6604a 172.x.x.12:6380slots: (0 slots) slavereplicates 7e6923ec3063d0833b134c3e30012d3a6605884b
S: 26bfdc8f75bf45870e77b392e077b52380833bd9 172.x.x.11:6380slots: (0 slots) slavereplicates a12d5d8daf4f7ef18a490f8db4766d66736c51e5
M: aa89fb16d032f62d58ac13d0b29450580f5f6337 172.x.x.13:6379slots:[10923-16383] (5461 slots) master1 additional replica(s)
[OK] All nodes agree about slots configuration.Check for open slots...Check slots coverage...
[OK] All 16384 slots covered.检查集群节点
docker exec -it redis-server-6379 redis-cli -c -h 172.x.x.11 -p 6379 cluster nodes其中 -c 表示以集群模式执行不加的话只会从当前连接的实例查询。
输出信息如下
a12d5d8daf4f7ef18a490f8db4766d66736c51e5 172.x.x.11:637916379 myself,master - 0 1710740884000 1 connected 0-5460
7e6923ec3063d0833b134c3e30012d3a6605884b 172.x.x.12:637916379 master - 0 1710740885000 2 connected 5461-10922
042b02321735a6995f474703adb8d73601fc1773 172.x.x.13:638016380 slave aa89fb16d032f62d58ac13d0b29450580f5f6337 0 1710740887000 3 connected
025b9b7e1163a39c4fcb76c6c8cb53b4c5a6604a 172.x.x.12:638016380 slave 7e6923ec3063d0833b134c3e30012d3a6605884b 0 1710740885837 2 connected
26bfdc8f75bf45870e77b392e077b52380833bd9 172.x.x.11:638016380 slave a12d5d8daf4f7ef18a490f8db4766d66736c51e5 0 1710740886839 1 connected
aa89fb16d032f62d58ac13d0b29450580f5f6337 172.x.x.13:637916379 master - 0 1710740887841 3 connected 10923-16383也可以直接检查节点信息文件。
cat /opt/docker-compose/redis/6379/data/nodes-6379.conf