Redis Sentinel 哨兵模式安裝配置到開機自啓全過程

一.Redis安裝

1.win系統連接linux 需要配置環境 安裝OpenSSH或者安裝Git客戶端

2.Windows機器安裝好Openssh或者GIt客戶端打開Cmd或GIt bash

3.輸入 ssh 用戶名@IP連接Linux服務器。

4.安裝Redis 一般安裝位置在 /usr/local/redis

$ mkdir /usr/local/redis //創建redis文件夾
$ cd /usr/local/redis //進入文件夾
$ wget http://download.redis.io/releases/redis-4.0.9.tar.gz //下載文件 我這裏選擇是4.0.9版本
$ tar xzf redis-4.0.9.tar.gz //解壓
$ cd redis-4.0.9 //進入目錄
$ make(make MALLOC=libc) //編譯

還有要注意的一點是記得安裝gcc和gcc-c++,還要注意gcc的版本,用gcc -v來查看當前安裝的gcc版本,版本過低(一般需要4.0以上)的話編譯redis3.0以上的是會出錯的。

yum install gcc
yum install gcc-c++ 

**有可能還要安裝tcl(如果make test出現You need tcl 8.5 or newer in order to run the Redis test的話) **

*yum install tcl 

redis編譯報致命錯誤:jemalloc/jemalloc.h沒有那個文件或目錄

分配器allocator, 如果有MALLOC 這個 環境變量, 會有用這個環境變量的 去建立Redis。
而且libc 並不是默認的 分配器, 默認的是 jemalloc, 因爲 jemalloc 被證明 有更少的 fragmentation problems 比libc。
但是如果你又沒有jemalloc 而只有 libc 當然 make 出錯。 所以加這麼一個參數,運行如下命令:make MALLOC=libc
以上錯誤完美解決。

5.安裝成功 啓動服務:

$ src/redis-server

測試:

$ src/redis-cli
redis> set name kk
OK
redis> get name
"kk"

6.設置啓動服務爲後臺運行

vim redis.conf

找到daemonize no 改爲daemonize yes 修改保存
啓動服務 加上配置文件:

redis-service redis.conf

#二.Redis sentinel 主從配置

redis主從配置,配置master 只能爲寫,slave只能爲讀,從而實現讀寫分離,在客戶端對poolconnect請求時候,,會將讀請求轉到slave上面,寫請求轉到master上面,同時,master和slave有同步功能,這就實現了(數據層)讀寫分離對上層(邏輯層)透明的正常邏輯。無需再通過中間件或者代碼進行讀寫分析實現。

Redis

這裏實現簡單的配置 我們拿一臺主機做測試有多臺更好 多臺主機搭建集羣其實異曲同工我們在主機安裝好Redis複製好配置文件修改對應IP端口即可。

第一步創建三個文件夾 複製我們上面搭建好的Redis

mkdir /usr/local/redisms/master //創建主服務目錄
mkdir /usr/local/redisms/slave1 //創建從服務1目錄
mkdir /usr/local/redisms/slave2 //創建從服務2目錄
cp -r /usr/local/redis /usr/local/redisms/master
cp -r /usr/local/redis /usr/local/redisms/slave1 
cp -r /usr/local/redis /usr/local/redisms/slave2 

修改master配置

cd /usr/local/redisms/master //進入目錄
vim redis.conf //編輯配置

我們主要修改這幾個地方

#添加一個密碼
requirepass "123" 
#後臺運行
daemonize yes
#修改爲你的安裝目錄 redis_端口號 這裏主服務器端口爲6379默認不動它
pidfile "/usr/local/redisms/master/redis_6379.pid"
#修改爲你的安裝目錄
logfile "/usr/local/redisms/master/log/log.log"
#修改爲你的安裝目錄
dir "/usr/local/redisms/master"

修改slave1配置

cd ../slave1 //進入目錄
vim redis.conf //編輯配置

我們主要修改這幾個地方

#添加一個密碼
requirepass "123" 
#端口改爲6001 使用前請查看端口是否被佔用
port 6001
#服務器轉變爲指定服務器的從屬服務器 如果是在別的主機上安裝這裏的IP改爲主服務器所屬機器IP Redis端口即可 這裏本地我們寫127.0.0.1
slaveof 127.0.0.1 6379
#後臺運行
daemonize yes
#修改爲你的安裝目錄 redis_端口號 端口改爲該redis服務端口
pidfile "/usr/local/redisms/slave1/redis_6001.pid"
#修改爲你的安裝目錄
logfile "/usr/local/redisms/slave1/log/log.log"
#修改爲你的安裝目錄
dir "/usr/local/redisms/slave1"

下面修改sentinel配置

vim sentinel.conf //編輯配置
#添加爲後臺運行
daemonize yes
#這裏從服務1的默認端口我們不動 稍後修改從2即可
port 26379
#這裏配置寫上主服務器IP 端口 2個sentinel選舉成功後纔有效
sentinel monitor mymaster 127.0.0.1 6379 2
#主服務器 redis密碼
sentinel auth-pass mymaster 123

修改slave2配置

cd ../slave2 //進入目錄
vim redis.conf //編輯配置

我們主要修改這幾個地方

#添加一個密碼
requirepass "123" 
#端口改爲6001 使用前請查看端口是否被佔用
port 6002
#服務器轉變爲指定服務器的從屬服務器 如果是在別的主機上安裝這裏的IP改爲主服務器所屬機器IP Redis端口即可 這裏本地我們寫127.0.0.1
slaveof 127.0.0.1 6379
#後臺運行
daemonize yes
#修改爲你的安裝目錄 redis_端口號  端口改爲該redis服務端口
pidfile "/usr/local/redisms/slave2/redis_6002.pid"
#修改爲你的安裝目錄
logfile "/usr/local/redisms/slave2/log/log.log"
#修改爲你的安裝目錄
dir "/usr/local/redisms/slave2"

下面修改sentinel配置

vim sentinel.conf //編輯配置
#添加爲後臺運行
daemonize yes
#端口不能重複 修改前請查看是否被佔用
port 26479
#這裏配置寫上主服務器IP 端口 2個sentinel選舉成功後纔有效
sentinel monitor mymaster 127.0.0.1 6379 2
#主服務器 redis密碼
sentinel auth-pass mymaster 123

結合上面我們redis sentinel 算是簡單配置完成。

啓動redis sentinel 服務

cd /usr/local/redisms/master //進入主服務器目錄
redis-server redis.conf //啓動主服務
cd ../slave1/ //進入從1服務
redis-server redis.conf //啓動從服務
redis-server sentinel.conf --sentinel //啓動從1哨兵
cd ../slave2/ //進入從2服務
redis-server redis.conf //啓動從服務
redis-server sentinel.conf --sentinel //啓動從2哨兵

ps -ef |grep redis //查看進程
root     24671     1  0 7月05 ?       00:01:05 /usr/local/redisms/master/src/redis-server *:6379
root     24672     1  0 7月05 ?       00:06:12 /usr/local/redisms/slave1/src/redis-server *:6001
root     24673     1  1 7月05 ?       00:12:24 /usr/local/redisms/slave1/src/redis-server *:26379 [sentinel]
root     24677     1  0 7月05 ?       00:06:12 /usr/local/redisms/slave2/src/redis-server *:6002
root     24679     1  1 7月05 ?       00:12:24 /usr/local/redisms/slave2/src/redis-server *:26479 [sentinel]

這個時候主服務器就可寫可讀 從服務器可讀狀態

kill -9 24671

這個時候殺死主服務則就會自動切換

this:到這裏基本完成redis sentinel配置
需要注意的是 在集羣中不同主機配置從服務器需要注意修改IP端口即可實現。

#三.Redis sentinel 主從配置開機自啓動
首先redis啓動主從分爲三個服務,那麼開機啓動服務我也分開好設置好了。
首先找到redis啓動腳本 在utils目錄下 redis_init_script 文件

cp /usr/local/redisms/master/utils/redis_init_script /etc/init.d/redis_master //複製到啓動我們初始化腳本
vim /etc/init.d/redis_master //編輯配置

看一下默認配置

#!/bin/sh
#
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.

REDISPORT=6379
EXEC=/usr/local/bin/redis-server
CLIEXEC=/usr/local/bin/redis-cli

PIDFILE=/var/run/redis_${REDISPORT}.pid
CONF="/etc/redis/${REDISPORT}.conf"

case "$1" in
    start)
        if [ -f $PIDFILE ]
        then
                echo "$PIDFILE exists, process is already running or crashed"
        else
                echo "Starting Redis server..."
                $EXEC $CONF
        fi
        ;;
    stop)
        if [ ! -f $PIDFILE ]
        then
                echo "$PIDFILE does not exist, process is not running"
        else
                PID=$(cat $PIDFILE)
                echo "Stopping ..."
                $CLIEXEC -p $REDISPORT shutdown
                while [ -x /proc/${PID} ]
                do
                    echo "Waiting for Redis to shutdown ..."
                    sleep 1
                done
                echo "Redis stopped"
        fi
        ;;
    *)
        echo "Please use start or stop as first argument"
        ;;
esac

修改後的配置


#!/bin/sh
#下面兩行不添加 設置開機啓動會報措說redis服務找不到
# chkconfig: 2345 10 90
# description: Start and Stop redis
#
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.

#Redis服務端口
REDISPORT=6379
#Redis服務端位置
EXEC=/usr/local/redisms/master/src/redis-server
#Redis客戶端位置
CLIEXEC=/usr/local/redisms/master/src/redis-cli
#Redis進程位置
PIDFILE=/usr/local/redisms/master/redis_${REDISPORT}.pid
#Redis配置文件位置
CONF="/usr/local/redisms/master/redis.conf"
#sentinel 配置位置
SlCONF="/usr/local/redisms/master/sentinel.conf"

case "$1" in
    start)
        if [ -f $PIDFILE ]
        then
                echo "$PIDFILE exists, process is already running or crashed"
        else
                echo "Starting Redis server..."
                #redis啓動在這這裏 配置從服務器啓動sentinel在這裏加上 $EXEC $SlCONF即可 SlCONF是上面定義好從服務器地址
                #$EXEC $CONF;
                #$EXEC $SlCONF
                $EXEC $CONF
        fi
        ;;
    stop)
        if [ ! -f $PIDFILE ]
        then
                echo "$PIDFILE does not exist, process is not running"
        else
                PID=$(cat $PIDFILE)
                echo "Stopping ..."
                # -a '123' 這裏是該redis服務密碼 關閉redis服務需要該密碼支持
                $CLIEXEC -a '123' -p $REDISPORT shutdown
                while [ -x /proc/${PID} ]
                do
                    echo "Waiting for Redis to shutdown ..."
                    sleep 1
                done
                echo "Redis stopped"
        fi
        ;;
    *)
        echo "Please use start or stop as first argument"
        ;;
esac

以上配置保存好修改就行

service redis_master start //啓動redis服務
service redis_master stop  //關閉redis服務
chkconfig redis_master on  //設爲開機啓動
chkconfig redis_master off //設爲開機關閉

從服務開機啓動模仿上面寫即可。

以上步驟完整搭建Redis Sentinel服務到開機自啓。


你總有一天會覺得很可惜,你已經陪伴一個人那麼久了,爲什麼要輕易放棄,而且對方那裏,也儲存了那麼多關於你的數據,你們本來應該是最匹配的,互相瞭解最多的呀!
算法和用戶相處的時間越長就越瞭解用戶。
我以爲我忘了你 卻發現醒來想的都是你 我以爲我清空了全部數據 可是還有項目端口是你的名字
我希望是像機器一樣,不開心可以重置一下,可以RM -RF關於你的數據。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章