Mac Centos7 - Redis 集群搭建

準(zhǔn)備工作:

centos7 鏡像地址:https://developer.aliyun.com/mirror/

redis 下載地址:http://download.redis.io/releases/redis-6.0.6.tar.gz

  • 首先查看防火墻的狀態(tài)
export PATH=/usr/local/bin:$PATH
systemctl status firewalld.service
  • 然后執(zhí)行命令進(jìn)行關(guān)閉
systemctl stop firewalld service
  • systemctl disable firewalld.service,開機(jī)禁止防火墻服務(wù)器
  • systemctl enable firewalld.service橄务,開機(jī)啟動(dòng)防火墻服務(wù)器

配置redis過程中可能遇到的問題藏杖,前置配置解決

Increased maximum number of open files to 10032 (it was originally set to 1024).

  • 查看文件打開數(shù)配置
ulimit -a
  • 配置方案
ulimit -n 65535
echo ulimit -n 65535 >>/etc/profile

WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.

  • 臨時(shí)方案
echo 1024 > /proc/sys/net/core/somaxconn
  • 配置方案
echo net.core.somaxconn= 1024 >> /etc/sysctl.conf && sysctl -p

WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.

  • 配置方案
echo vm.overcommit_memory = 1 >> /etc/sysctl.conf && sysctl -p

安裝

如果大家在centos7下編譯redis6.0版本凡泣,如果出現(xiàn)以下錯(cuò)誤

In file included from server.c:30:0:
server.h:1022:5: error: expected specifier-qualifier-list before ‘_Atomic’
_Atomic unsigned int lruclock; /* Clock for LRU eviction */

請(qǐng)先檢查gcc的版本是否低于5箫措,如果是請(qǐng)先升級(jí)桦山,可以使用以下命令:

sudo yum install centos-release-scl
sudo yum install devtoolset-7-gcc*
scl enable devtoolset-7 bash

開始安裝

sudo su root ## 先切換到 root 身份下
sudo mkdir /opt/src /opt/redis
cd /opt/src
sudo wget http://download.redis.io/releases/redis-6.0.6.tar.gz
sudo tar xzf redis-6.0.6.tar.gz
cd redis-6.0.6
sudo make && make install

修改安裝腳本

vim ./utils/install_server.sh
-- 注釋掉這段代碼
#bail if this system is managed by systemd
#_pid_1_exe="$(readlink -f /proc/1/exe)"
#if [ "${_pid_1_exe##*/}" = systemd ]
#then
#       echo "This systems seems to use systemd."
#       echo "Please take a look at the provided example service unit files in this directory, and adapt and install them. Sorry!"
#       exit 1
#fi
#unset _pid_1_exe
執(zhí)行安裝
sudo ./utils/install_server.sh

配置文件目錄輸入這個(gè)地址:/opt/redis/6379/6379.conf
其他的都可以默認(rèn)尘分,一直回車

修改啟動(dòng)腳本(不設(shè)置連接密碼的排拷,可以不修改)

sudo vim /etc/init.d/redis_6379
REDISPORT=6379 下加入
PASSWORD=$(cat $CONF|grep '^\s*requirepass'|awk '{print $2}'|sed 's/"http://g')
替換:

    stop)
        if [ ! -f $PIDFILE ]
        then
            echo "$PIDFILE does not exist, process is not running"
        else
            PID=$(cat $PIDFILE)
            echo "Stopping ..."
            if [ -z $PASSWORD ]
            then 
                $CLIEXEC -p $REDISPORT shutdown
            else
                $CLIEXEC -a $PASSWORD -p $REDISPORT shutdown
            fi
            while [ -x /proc/${PID} ]
            do
                echo "Waiting for Redis to shutdown ..."
                sleep 1
            done
            echo "Redis stopped"
        fi
        ;;

修改配置文件

  • 修改成允許所有ip連接
  • AOF開啟
  • 重啟一下Redis,安裝就好了
sed -i 's/# bind 127.0.0.0/bind 0.0.0.0/g' /opt/redis/6379/6379.conf
sed -i 's/bind 127.0.0.0/bind 0.0.0.0/g' /opt/redis/6379/6379.conf
sed -i 's/appendonly no/appendonly yes/g' /opt/redis/6379/6379.conf
service redis_6379 restart
  • 拷貝兩份Redis配置文件和啟動(dòng)文件缺前,一會(huì)用來做集群的搭建
mkdir /opt/redis/cluster
cp /opt/redis/6379/6379.conf /opt/redis/cluster/6380.conf
cp /opt/redis/6379/6379.conf /opt/redis/cluster/6381.conf
  • 配置sentinel哨兵文件
cp /opt/src/redis-6.0.6/sentinel.conf /opt/redis/6379/
sed -i 's/daemonize no/daemonize yes/g' /opt/redis/6379/sentinel.conf
sed -i 's/logfile ""/logfile "\/var\/log\/sentinel.log"/g' /opt/redis/6379/sentinel.conf
sed -i 's/monitor mymaster 127.0.0.1 6379 2/monitor mymaster [你的master ip] 6379 2/g' /opt/redis/6379/sentinel.conf
echo "bind 0.0.0.0" >> /opt/redis/6379/sentinel.conf
echo "sentinel down-after-milliseconds mymaster 5000" >> /opt/redis/6379/sentinel.conf

## sentinel auth-pass mymaster <password> 配置密碼的話需要填寫密碼
  • 配置sentinel哨兵啟動(dòng)文件
cp /etc/init.d/redis_6379 /etc/init.d/sentinel
sed -i 's/redis_6379.pid/redis-sentinel.pid/g' /etc/init.d/sentinel
sed -i 's/REDISPORT="6379"/REDISPORT="26379"/g' /etc/init.d/sentinel
sed -i 's/6379.conf/sentinel.conf/g' /etc/init.d/sentinel
sed -i 's/redis_6379/sentinel/g' /etc/init.d/sentinel
sed -i 's/Redis/Sentinel/g' /etc/init.d/sentinel
sed -i 's/redis-server/redis-sentinel/g' /etc/init.d/sentinel
  • 修改 6380 配置
mkdir /var/lib/redis/6380
sed -i 's/port 6379/port 6380/g' /opt/redis/cluster/6380.conf
sed -i 's/redis_6379/redis_6380/g' /opt/redis/cluster/6380.conf
sed -i 's/dir \/var\/lib\/redis\/6379/dir \/var\/lib\/redis\/6380/g' /opt/redis/cluster/6380.conf
sed -i 's/# cluster-enabled yes/cluster-enabled yes/g' /opt/redis/cluster/6380.conf
sed -i 's/# cluster-node-timeout 15000/cluster-node-timeout 15000/g' /opt/redis/cluster/6380.conf
  • 修改 6381 配置
/var/lib/redis/6381
sed -i 's/port 6379/port 6381/g' /opt/redis/cluster/6381.conf
sed -i 's/redis_6379/redis_6381/g' /opt/redis/cluster/6381.conf
sed -i 's/dir \/var\/lib\/redis\/6379/dir \/var\/lib\/redis\/6381/g' /opt/redis/cluster/6381.conf
sed -i 's/# cluster-enabled yes/cluster-enabled yes/g' /opt/redis/cluster/6381.conf
sed -i 's/# cluster-node-timeout 15000/cluster-node-timeout 15000/g' /opt/redis/cluster/6381.conf
  • 配置cluster啟動(dòng)服務(wù)
cp /etc/init.d/redis_6379 /etc/init.d/redis_6380; cp /etc/init.d/redis_6379 /etc/init.d/redis_6381
sed -i 's/6379/6380/g' /etc/init.d/redis_6380
sed -i 's/\/opt\/redis\/6380/\/opt\/redis\/cluster/g' /etc/init.d/redis_6380
sed -i 's/6379/6381/g' /etc/init.d/redis_6381
sed -i 's/\/opt\/redis\/6381/\/opt\/redis\/cluster/g' /etc/init.d/redis_6381
  • 軟鏈一下
ln -s /usr/local/bin/redis-cli /usr/bin/redis-cli

虛擬機(jī)的話蛀醉,克隆當(dāng)前機(jī)器出兩臺(tái)來,用來搭建集群

主從配置

  • slave (兩臺(tái)機(jī)器)上執(zhí)行
sed -i 's/# replicaof <masterip> <masterport>/replicaof [你的master ip] 6379/g' /opt/redis/6379/6379.conf
  • 重啟 slave (兩臺(tái)機(jī)器)上的redis
service redis_6379 restart
  • 查看日志是否連接成功
tail -f /var/log/redis_6379.log
  • 登錄redis 查看是否有主從信息
redis-cli
127.0.0.1:6379> info replication
主從-主-info-replication.png
  • master 主上設(shè)置值
127.0.0.1:6379> set master master

slave 機(jī)器上

  • 登錄redis 查看是否有主從信息衅码,并獲取master設(shè)置的值
redis-cli
127.0.0.1:6379> info replication
127.0.0.1:6379> get master
主從-從-info-replication.png

sentinel 哨兵配置

  • master 機(jī)器上重啟sentinel
service sentinel restart
  • [如果是克隆出來的鏡像的話] slave機(jī)器上拯刁,注釋掉myid 不能重復(fù),并執(zhí)行重啟逝段,自動(dòng)生成
sed -i 's/sentinel myid/# sentinel myid/g' /opt/redis/6379/sentinel.conf
service sentinel restart
  • [主備切換] master 機(jī)器上重啟停掉redis
service redis_6379 stop
  • 查看日志是否有自動(dòng)切換master的日志
tail -f /var/log/sentinel.log
  • 成功切換master之后垛玻,重新啟動(dòng)redis
service redis_6379 start
  • 登錄redis
redis-cli
127.0.0.1:6379> info replication
  • 查看是否已經(jīng)從 master -> slave

集群配置

  • 主從機(jī)器,全部啟動(dòng) 6380 6381
service redis_6380 start
service redis_6381 start
  • 創(chuàng)建集群 [ip替換自己的集群ip]
redis-cli --cluster create 10.211.55.7:6380 10.211.55.7:6381 10.211.55.8:6380 10.211.55.8:6381 10.211.55.9:6380 10.211.55.9:6381 --cluster-replicas 1
  • 登錄集群 [-c 集群方式登錄]
redis-cli -c -p 6380
  • 查看集群信息
127.0.0.1:6380> cluster info
cluster-cluster-info.png
  • 列出節(jié)點(diǎn)信息
127.0.0.1:6380> cluster nodes
cluster-cluster-nodes.png
  • 設(shè)置一個(gè)值
127.0.0.1:6380> set cluster cluster
  • 在集群中任一節(jié)點(diǎn)進(jìn)去后奶躯,是否都能獲取到值
127.0.0.1:6380> get cluster

寫在最后:結(jié)合官方的安裝腳本帚桩,理論上能實(shí)現(xiàn)一個(gè)集群安裝腳本的

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市嘹黔,隨后出現(xiàn)的幾起案子账嚎,更是在濱河造成了極大的恐慌,老刑警劉巖儡蔓,帶你破解...
    沈念sama閱讀 219,539評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件郭蕉,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡喂江,警方通過查閱死者的電腦和手機(jī)召锈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來获询,“玉大人涨岁,你說我怎么就攤上這事】鸶叮” “怎么了卵惦?”我有些...
    開封第一講書人閱讀 165,871評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)瓦戚。 經(jīng)常有香客問我沮尿,道長(zhǎng),這世上最難降的妖魔是什么较解? 我笑而不...
    開封第一講書人閱讀 58,963評(píng)論 1 295
  • 正文 為了忘掉前任畜疾,我火速辦了婚禮,結(jié)果婚禮上印衔,老公的妹妹穿的比我還像新娘啡捶。我一直安慰自己,他們只是感情好奸焙,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評(píng)論 6 393
  • 文/花漫 我一把揭開白布瞎暑。 她就那樣靜靜地躺著彤敛,像睡著了一般。 火紅的嫁衣襯著肌膚如雪了赌。 梳的紋絲不亂的頭發(fā)上墨榄,一...
    開封第一講書人閱讀 51,763評(píng)論 1 307
  • 那天,我揣著相機(jī)與錄音勿她,去河邊找鬼袄秩。 笑死,一個(gè)胖子當(dāng)著我的面吹牛逢并,可吹牛的內(nèi)容都是我干的之剧。 我是一名探鬼主播,決...
    沈念sama閱讀 40,468評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼砍聊,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼背稼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起辩恼,我...
    開封第一講書人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤雇庙,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后灶伊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體疆前,經(jīng)...
    沈念sama閱讀 45,850評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評(píng)論 3 338
  • 正文 我和宋清朗相戀三年聘萨,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了竹椒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,144評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡米辐,死狀恐怖胸完,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情翘贮,我是刑警寧澤赊窥,帶...
    沈念sama閱讀 35,823評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站狸页,受9級(jí)特大地震影響锨能,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜芍耘,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評(píng)論 3 331
  • 文/蒙蒙 一址遇、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧斋竞,春花似錦倔约、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)钾军。三九已至,卻和暖如春绢要,著一層夾襖步出監(jiān)牢的瞬間巧颈,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工袖扛, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人十籍。 一個(gè)月前我還...
    沈念sama閱讀 48,415評(píng)論 3 373
  • 正文 我出身青樓蛆封,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親勾栗。 傳聞我的和親對(duì)象是個(gè)殘疾皇子惨篱,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容