日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

centOS7安装redis单例配置主从+哨兵+VIP

發(fā)布時(shí)間:2023/12/18 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 centOS7安装redis单例配置主从+哨兵+VIP 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

單機(jī)版的redis安裝

Redis集群搭建(主從+哨兵)

?

redis主從+哨兵配置完成后,使用腳本功能實(shí)現(xiàn)VIP漂移


單機(jī)版的redis安裝

1.安裝依賴

#先檢查有沒有g(shù)cc gcc --version #如果沒有,就進(jìn)行安裝 yum install gcc -y#如果缺少tcl包,在這里安裝一下(如果make test出現(xiàn)You need tcl 8.5 or newer in order to run the Redis test的話) yum install tcl -y

2.獲取資源,上傳或者直接下載

wget http://download.redis.io/releases/redis-4.0.6.tar.gz

3.解壓

tar xzvf redis-4.0.6.tar.gz

4.安裝

cd redis-4.0.6#編譯 makecd src# 安裝到指定的目錄 make install PREFIX=/usr/local/redis

如果安裝的過程中,報(bào)錯(cuò)如下:

zmalloc.h:50:31: 致命錯(cuò)誤:jemalloc/jemalloc.h:沒有那個(gè)文件或目錄

則運(yùn)行如下命令后,再執(zhí)行安裝命令

make MALLOC=libc

5.將解壓包中的配置文件移動(dòng)到安裝目錄下:

mkdir /usr/local/redis/etccp redis.conf /usr/local/redis/etc/

6.修改配置文件---》這里指的是單機(jī)版的配置文件修改,主從+哨兵模式請參考文章中的專用配置

1)?修改Redis以守護(hù)進(jìn)程方式啟動(dòng)

2)修改允許其他客戶端連接登錄此Redis數(shù)據(jù)庫,或者改為bind 0.0.0.0

3)開啟遠(yuǎn)程訪問

?

4)設(shè)置連接登錄Redis數(shù)據(jù)庫密碼

5)修改安裝目錄,存放數(shù)據(jù)庫

修改總結(jié):

#允許遠(yuǎn)程訪問 bind 0.0.0.0 #關(guān)閉遠(yuǎn)程保護(hù) protected-mode no #添加一個(gè)密碼 requirepass "123" #后臺(tái)運(yùn)行 daemonize yes #修改為你的安裝目錄 redis_端口號(hào) 這里主服務(wù)器端口為6379默認(rèn)不動(dòng)它 pidfile /home/redis/redis_6379.pid #修改為你的安裝目錄 logfile /home/redis/redis.log #修改為你的安裝目錄 dir /usr/local/redis/

7.啟動(dòng)redis

./redis-server etc/redis.conf

7.將redis服務(wù)器添加到systemctl服務(wù)器中,便于管理,centOS7.8下,redis版本為4.0.6,執(zhí)行systemctl enable redis后,開機(jī)重啟一直不起作用,sentinel可以正常個(gè)啟動(dòng),一直不知道哪里有問題,嘗試了好久都沒有設(shè)置成功,試著使用redis-5.0.12版本,同樣出現(xiàn)開機(jī)自啟動(dòng)不成功。

vi /usr/lib/systemd/system/redis.service

#表示基礎(chǔ)信息 [Unit] #描述 Description=Redis #在哪個(gè)服務(wù)之后啟動(dòng) After=network.target#表示服務(wù)信息 [Service] Type=forking #注意:需要和redis.conf配置文件中的信息一致 PIDFile=/var/run/redis_6379.pid #啟動(dòng)服務(wù)的命令 #redis-server安裝的路徑 和 redis.conf配置文件的路徑 ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/bin/redis.conf #重新加載命令 ExecReload=/bin/kill -s HUP $MAINPID #停止服務(wù)的命令,使用如下方式停止程序時(shí),可以停止,但是停止后systemctl status redis # 有failed信息,報(bào)錯(cuò)信息看下面的圖,但是不影響使用 # ExecStop=/bin/kill -s QUIT $MAINPID # 如果覺得看著不舒服,可以使用下面這一條代替,redis服務(wù)器端口號(hào)根據(jù)實(shí)際情況進(jìn)行修改 ExecStop=/home/redis/bin/redis-cli -p 6379 shutdown # 用于設(shè)置是否使用私有的tmp目錄 # 使用ExecStop=/bin/kill -s QUIT $MAINPID,發(fā)現(xiàn)必須加PrivateTmp=true,才可以使用systemctl # 正常啟動(dòng)程序,不加的話會(huì)報(bào)錯(cuò),不使用該種方式停止服務(wù)時(shí),不開啟 PrivateTmp=true#安裝相關(guān)信息 [Install] #以哪種方式啟動(dòng) WantedBy=multi-user.target #multi-user.target表明當(dāng)系統(tǒng)以多用戶方式(默認(rèn)的運(yùn)行級(jí)別)啟動(dòng)時(shí),這個(gè)服務(wù)需要被自動(dòng)運(yùn)行。

報(bào)錯(cuò)信息:

完整的redis.service,直接復(fù)制,修改后即可使用

vi /usr/lib/systemd/system/redis.service

[Unit] Description=Redis After=network.target[Service] Type=forking PIDFile=/var/run/redis_6379.pid ExecStart=/home/redis/bin/redis-server /home/redis/etc/redis.conf ExecReload=/bin/kill -s HUP $MAINPID #ExecStop=/bin/kill -s QUIT $MAINPID ExecStop=/home/redis/bin/redis-cli -a "password" -p 6379 shutdown #PrivateTmp=True[Install] WantedBy=mutli-user.target

附加一下哨兵的systemctl服務(wù),哨兵服務(wù),按照下面的配置,已經(jīng)試過好多次了,下面的配置運(yùn)行一切正常,不用加PIDFile,加了反而會(huì)有警告

vi /usr/lib/systemd/system/redis-sentinel.service

[Unit] Description=Redis-sentinel After=network.target[Service] Type=forking ExecStart=/home/redis/bin/redis-sentinel /home/redis/etc/sentinel.conf ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/home/redis/bin/redis-cli -p 26379 shutdown #PrivateTmp=true[Install] WantedBy=multi-user.target

?

編輯完成后,重新加載系統(tǒng)服務(wù),使配置生效

systemctl daemon-reload

命令使用:

開機(jī)啟動(dòng): systemctl enable redis.service

查看服務(wù)是否設(shè)置開機(jī)啟動(dòng): systemctl is-enabled redis.service

停止服務(wù)開機(jī)啟動(dòng): systemctl disable redis.service

啟動(dòng): systemctl start redis.service

查看狀態(tài): systemctl status redis.service

重啟: systemctl restart redis.service

停止: systemctl stop redis.service

8.設(shè)置redis相關(guān)命令在任意目錄下可以使用

將安裝后的bin文件目錄下的腳本拷貝到/usr/local/bin/目錄下即可

redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-sentinel redis-server 主要是上面這幾個(gè)文件 切換到安裝目錄的bin文件下 cp * /usr/local/bin/

?

?

?

Redis集群搭建(主從+哨兵)

可以參考下面這篇文章:

https://blog.csdn.net/xch_yang/article/details/104019552

這篇文章中有一個(gè)錯(cuò)誤,這里指正出來:在哨兵搭建環(huán)節(jié),配置sentinel.conf時(shí),錯(cuò)誤的地方如下:

//端口默認(rèn)為26379。 port 26379 //關(guān)閉保護(hù)模式,可以外部訪問。 protected-mode no //設(shè)置為后臺(tái)啟動(dòng)。 daemonize yes //日志文件。 logfile "/home/redis/sentinel.log" //指定主機(jī)IP地址和端口,并且指定當(dāng)有2臺(tái)哨兵認(rèn)為主機(jī)掛了,則對主機(jī)進(jìn)行容災(zāi)切換。 sentinel monitor mymaster 192.168.231.130 6379 2 //當(dāng)在Redis實(shí)例中開啟了requirepass,這里就需要提供密碼。 sentinel auth-pass mymaster pwdtest@2019 //這里設(shè)置了主機(jī)多少秒無響應(yīng),則認(rèn)為掛了。 sentinel down-after-milliseconds mymaster 3000 //主備切換時(shí),最多有多少個(gè)slave同時(shí)對新的master進(jìn)行同步,這里設(shè)置為默認(rèn)的1。 sentinel parallel-syncs mymaster 1 //故障轉(zhuǎn)移的超時(shí)時(shí)間,這里設(shè)置為三分鐘。 sentinel failover-timeout mymaster 180000

redis主從+哨兵配置完成后,使用腳本功能實(shí)現(xiàn)VIP漂移

參考鏈接:下面鏈接中的腳本都可以使用--->測試有效

https://www.w3cschool.cn/redis_all_about/redis_all_about-91n5271k.html

https://www.sijitao.net/3070.html

注意:

上述兩個(gè)腳本執(zhí)行之前,都必須先在redis master中創(chuàng)建好腳本中使用的VIP,否則會(huì)切換不成功,一定要先創(chuàng)建,一定要先創(chuàng)建,一定要先創(chuàng)建。

# 手動(dòng)創(chuàng)建虛擬ip ip addr add 192.168.171.100/24 dev ens33

在sentinel進(jìn)行切換時(shí)還會(huì)自動(dòng)調(diào)用一個(gè)腳本(如果設(shè)置的話),做一些自動(dòng)化操作,比如如果我們需要一個(gè)虛擬IP永遠(yuǎn)飄在Master上,那么可以在sentinel配置文件中配置:

sentinel client-reconfig-script mymaster /home/redis/script/failover.sh

在發(fā)生主從切換,Master發(fā)生變化時(shí),該腳本會(huì)被sentinel進(jìn)行調(diào)用,調(diào)用的參數(shù)如其配置文件所描述的:

因此,我們可以在failover.sh中進(jìn)行判斷,如果該腳本所運(yùn)行的主機(jī)IP等于新的Master IP,那么將VIP加上,如果不等于,則該機(jī)器為Slave,就去掉VIP。通過這種方式進(jìn)行VIP的切換:

cd /home/redis/script

vi failover.sh

下面的腳本Demo,只需要更改VIP和IFACE、MASK即可,其他的可以通用。

#!/bin/sh _DEBUG="on" DEBUGFILE=/home/redis/script/sentinel_failover.log VIP='192.168.171.110' MASTERIP=${6} MASK='24' IFACE='ens33' MYIP=$(ip -4 -o addr show dev ${IFACE}| grep -v secondary| awk '{split($4,a,"/");print a[1]}') #MYIP='192.168.171.10'DEBUG () {if [ "$_DEBUG" = "on" ]; thenecho `$@` >> ${DEBUGFILE}fi }set -e DEBUG date DEBUG echo $@ DEBUG echo "Master: ${MASTERIP} My IP: ${MYIP}" if [ ${MASTERIP} = ${MYIP} ]; thenif [ $(ip addr show ${IFACE} | grep ${VIP} | wc -l) = 0 ]; then/sbin/ip addr add ${VIP}/${MASK} dev ${IFACE}DEBUG dateDEBUG echo "/sbin/ip addr add ${VIP}/${MASK} dev ${IFACE}"DEBUG dateDEBUG echo "IP Arp cleaning: /usr/sbin/arping -q -f -c 1 -A ${VIP} -I ${IFACE}"/usr/sbin/arping -q -f -c 1 -A ${VIP} -I ${IFACE}DEBUG dateDEBUG echo "IP Failover finished!"fiexit 0 elseif [ $(ip addr show ${IFACE} | grep ${VIP} | wc -l) != 0 ]; then/sbin/ip addr del ${VIP}/${MASK} dev ${IFACE}DEBUG echo "/sbin/ip addr del ${VIP}/${MASK} dev ${IFACE}"fiexit 0 fi

賦予腳本可執(zhí)行權(quán)限

chmod 755 failover.sh

配置完成后,重新啟動(dòng)sentinel即可------>記得一定要提前將VIP配置好。

全部正常啟動(dòng)后,可以在從機(jī)去連接主機(jī)測試,redis-cli -h 192.168.171.110 -a password

?

收藏一下主從+哨兵配置:

?

?

?

?

總結(jié)

以上是生活随笔為你收集整理的centOS7安装redis单例配置主从+哨兵+VIP的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。