将mysql服务注册到consul_使用consul实现分布式服务注册和发现--redis篇

本文介绍了如何将Redis服务注册到Consul,通过配置Consul客户端和服务检查脚本来实现主从节点的自动检测,并在192.168.56.122和192.168.56.132服务器上进行设置。通过Consul的健康检查确保高可用性,并展示了在主从角色互换时的处理步骤。
摘要由CSDN通过智能技术生成

本文是上面文章的续集

安装consul client

consul 客户端检脚本

=============================================================================================

在192.168.56.122服务器上

=============================================================================================

1、安装redis

yum intstall redis -y

2、配置redis  为主

cat >/etc/redis.conf<

bind 192.168.56.122 127.0.0.1

protected-mode yes

port 6379

tcp-backlog 511

timeout 0

tcp-keepalive 300

daemonize yes

supervised no

pidfile /var/run/redis_6379.pid

loglevel notice

logfile /var/log/redis/redis.log

databases 16

save 900 1

save 300 10

save 60 10000

stop-writes-on-bgsave-error yes

rdbcompression yes

rdbchecksum yes

dbfilename dump.rdb

dir /var/lib/redis

slave-serve-stale-data yes

slave-read-only yes

repl-diskless-sync no

repl-diskless-sync-delay 5

repl-disable-tcp-nodelay no

slave-priority 100

requirepass password

appendonly no

appendfilename "appendonly.aof"

appendfsync everysec

no-appendfsync-on-rewrite no

auto-aof-rewrite-percentage 100

auto-aof-rewrite-min-size 64mb

aof-load-truncated yes

lua-time-limit 5000

slowlog-log-slower-than 10000

slowlog-max-len 128

latency-monitor-threshold 0

notify-keyspace-events ""

hash-max-ziplist-entries 512

hash-max-ziplist-value 64

list-max-ziplist-size -2

list-compress-depth 0

set-max-intset-entries 512

zset-max-ziplist-entries 128

zset-max-ziplist-value 64

hll-sparse-max-bytes 3000

activerehashing yes

client-output-buffer-limit normal 0 0 0

client-output-buffer-limit slave 256mb 64mb 60

client-output-buffer-limit pubsub 32mb 8mb 60

hz 10

aof-rewrite-incremental-fsync yes

EOF

3、启动redis

service redis start

4、配置consul服务

[root@MySQL-slave /etc/consul]# cat >redis-master.json<

{

"service": [

{

"name": "6379-redis-m",

"tags": ["master"],

"address": "192.168.56.132",

"port": 6379,

"checks": [

{

"args": ["/data/consul/check_master.sh","0"],

"interval": "5s"

}

]

}

]

}

EOF

[root@MySQL-slave /etc/consul]# cat >redis-slave.json<

{

"service": [

{

"name": "6379-redis-s",

"tags": ["slave"],

"address": "192.168.56.132",

"port": 6379,

"checks": [

{

"args": ["/data/consul/check_slave.sh","0"],

"interval": "5s"

}

]

}

]

}

EOF

5、主从检测脚本

[root@tomcat103 17:30:04 consul]/#cat  >/data/consul/check_master.sh<

#!/bin/bash

/usr/bin/redis-cli -h 127.0.0.1 -p 6379 -a password info | grep role:master

a=$?

if [ $a == 1 ];then

exit 2

fi

EOF

[root@tomcat103 17:30:18 consul]/#cat >/data/consul/check_slave.sh<

#!/bin/bash

/usr/bin/redis-cli -h 127.0.0.1 -p 6379 -a password info | grep role:slave

a=$?

if [ $a == 1 ];then

exit 2

fi

EOF

更改启动命令

nohup /usr/local/bin/consul agent -config-dir=/etc/consul -rejoin -enable-script-checks=true &

====================================================================

在192.168.56.122服务器上

====================================================================

1、安装redis

yum intstall redis -y

2、配置192.168.56.132上为192.168.56.122 redis的从

cat >/etc/redis.conf<

bind 192.168.56.132 127.0.0.1

protected-mode yes

port 6379

tcp-backlog 511

timeout 0

tcp-keepalive 300

daemonize yes

supervised no

pidfile /var/run/redis_6379.pid

loglevel notice

logfile /var/log/redis/redis.log

databases 16

save 900 1

save 300 10

save 60 10000

stop-writes-on-bgsave-error yes

rdbcompression yes

rdbchecksum yes

dbfilename dump.rdb

dir /var/lib/redis

slaveof 192.168.56.122 6379

masterauth password

slave-serve-stale-data yes

slave-read-only yes

repl-diskless-sync no

repl-diskless-sync-delay 5

repl-disable-tcp-nodelay no

slave-priority 100

requirepass password

appendonly no

appendfilename "appendonly.aof"

appendfsync everysec

no-appendfsync-on-rewrite no

auto-aof-rewrite-percentage 100

auto-aof-rewrite-min-size 64mb

aof-load-truncated yes

lua-time-limit 5000

slowlog-log-slower-than 10000

slowlog-max-len 128

latency-monitor-threshold 0

notify-keyspace-events ""

hash-max-ziplist-entries 512

hash-max-ziplist-value 64

list-max-ziplist-size -2

list-compress-depth 0

set-max-intset-entries 512

zset-max-ziplist-entries 128

zset-max-ziplist-value 64

hll-sparse-max-bytes 3000

activerehashing yes

client-output-buffer-limit normal 0 0 0

client-output-buffer-limit slave 256mb 64mb 60

client-output-buffer-limit pubsub 32mb 8mb 60

hz 10

aof-rewrite-incremental-fsync yes

EOF

3、配置consul服务

主从检测脚本

[root@tomcat103 17:30:04 consul]/#cat  >/data/consul/check_master.sh<

#!/bin/bash

/usr/bin/redis-cli -h 127.0.0.1 -p 6379 -a password info | grep role:master

a=$?

if [ $a == 1 ];then

exit 2

fi

EOF

[root@tomcat103 17:30:18 consul]/#cat >/data/consul/check_slave.sh<

#!/bin/bash

/usr/bin/redis-cli -h 127.0.0.1 -p 6379 -a password info | grep role:slave

a=$?

if [ $a == 1 ];then

exit 2

fi

EOF

4、consul配置文件

[root@MySQL-slave /etc/consul]# cat >/etc/consul/consul_config.json<

{

"advertise_addr": "192.168.56.132",

"bind_addr": "192.168.56.132",

"domain": "consul",

"datacenter": "consul-cluster",

"data_dir": "/data/consul/data",

"enable_syslog": true,

"performance": {

"raft_multiplier": 1

},

"dns_config": {

"allow_stale": true,

"max_stale": "15s"

},

"retry_join": [

"192.168.56.120",

"192.168.56.121",

"192.168.56.122"

],

"retry_interval": "10s",

"skip_leave_on_interrupt": true,

"leave_on_terminate": false,

"ports": {

"dns": 53,

"http": 80

},

"rejoin_after_leave": true,

"addresses": {

"http": "0.0.0.0",

"dns": "0.0.0.0"

}

}

EOF

[root@MySQL-slave /etc/consul]# cat >/etc/consul/redis-master.json<

{

"service": [

{

"name": "6379-redis-m",

"tags": ["master"],

"address": "192.168.56.132",

"port": 6379,

"checks": [

{

"args": ["/data/consul/check_master.sh","0"],

"interval": "5s"

}

]

}

]

}

EOF

[root@MySQL-slave /etc/consul]# cat >/etc/consul/redis-slave.json<

{

"service": [

{

"name": "6379-redis-s",

"tags": ["slave"],

"address": "192.168.56.132",

"port": 6379,

"checks": [

{

"args": ["/data/consul/check_slave.sh","0"],

"interval": "5s"

}

]

}

]

}

EOF

5、启动consul客户端服务

nohup consul agent -config-dir /etc/consul/ -data-dir /data/consul/data -enable-script-checks=true -ui &

6、 在122服务器上ping 域名

测试高可用性

ping 6379-redis-m.service.consul

ping 6379-redis-s.service.consul

(推荐使用dig @192.168.56.120 -p 53 6379-redis-m.service.consul 命令测试 )

2ee283a57e994cf16dc02517d4c41489.png==================================================================================

更改两个服务器redis配置

互换主从角色

在122上打开着两行注释

slaveof 192.168.56.132 6379

masterauth password

重启redis

service redis restart

在132上

#slaveof 192.168.56.122 6379

#masterauth password

重启服务

service redis restart

重新测试域名对应的数据库主从地址

ping 6379-redis-m.service.consul

ping 6379-redis-s.service.consul

1b89801bb74365335f22c777fdd1f8c4.png

至此consul通过脚本自动发现redis主从高可用完成

特别建议使用sentinel  或者redis cluster  实现故障切换,本文利用主从结构只是为了达到实验目的

本文出自 “linux-letian” 博客,转载请与作者联系!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值