centos7安裝redis4集羣服務

基於centos7.

前置下載

安裝GCC和wget

yum install wget
yum -y install gcc automake autoconf libtool make

安裝ruby(如果做集羣,redis-trib.rb 要求必須2.2以上)

在Centos7.3中,通過yum安裝ruby的版本是2.0.0,但是如果有些應用需要高版本的ruby環境,比如2.2,2.3,2.4...在Centos7.3中,通過yum安裝ruby的版本是2.0.0,但是如果有些應用需要高版本的ruby環境,比如2.2,2.3,2.4...

方法一:換yum源安裝

#會在/etc/yum.repos.d/目錄下多出一個CentOS-SCLo-scl-rh.repo源
yum install centos-release-scl-rh
#直接yum安裝即可
yum install rh-ruby23  -y 
#必要一步
scl  enable  rh-ruby23 bash
#查看安裝版本
ruby -v    

下載redis

$ wget http://download.redis.io/releases/redis-4.0.9.tar.gz
$ tar xzf redis-4.0.9.tar.gz
$ cd redis-4.0.9
$ mv redis-4.0.9 /opt/redis
# 如果未安裝gcc編譯失敗則需要執行下面這個命令
$ make distclean
$ make

運行單機redis

現在編譯的二進制文件在src 目錄中可用 。運行Redis:

$ src/redis-server
# 或者指定
$ /opt/redis/src/redis-server /opt/redis/redis.conf

您可以使用內置客戶端與Redis進行交互:

$ src/redis-cli or $redis-cli -h 192.168.42.151
redis> set foo bar
OK
redis> get foo
"bar"

注意 redis.conf的相關配置:

#端口7000,7001,7002
port 7000

#默認ip爲127.0.0.1,需要改爲其他節點機器可訪問的ip,否則創建集羣時無法訪問對應的端口,無法創建集羣
bind 192.168.252.101

#redis後臺運行
daemonize yes

#pidfile文件對應7000,7001,7002
pidfile /var/run/redis_7000.pid

#開啓集羣,把註釋#去掉
cluster-enabled yes

#集羣的配置,配置文件首次啓動自動生成 7000,7001,7002          
cluster-config-file nodes_7000.conf

#請求超時,默認15秒,可自行設置 
cluster-node-timeout 10100    

#aof日誌開啓,有需要就開啓,它會每次寫操作都記錄一條日誌
appendonly yes

將redis安裝爲服務

  1. 進入到redis安裝目錄,具體位置看你安裝時的路徑了。
cd /usr/local/redis/
  1. 編輯配置文件
sudo vim ./redis.conf
  1. 將如下配置項註釋掉
#bind 127.0.0.1
  1. 如下項修改爲yes,默認是no
daemonize yes
  1. 修改pid文件路徑,此處可選,使用默認路徑也可以。
pidfile /usr/local/redis/redis.pid
  1. 取消保護模式,此處可選。取消了便不要求使用密碼驗證了。
protected-mode no
  1. 配置日誌文件路徑
logfile "/usr/local/redis/logs/redis.log"
  1. 保存文件。

  2. 新建文件

sudo vim /usr/lib/systemd/system/redis.service
  1. 寫入如下內容,具體文件路徑,各異。
[Unit]
Description=Redis
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/usr/local/redis/redis.pid
ExecStart=/usr/local/redis/src/redis-server /usr/local/redis/redis.conf
ExecReload=/bin/kill -s HUP $MAINPID 
ExecStop=/bin/kill -s QUIT $MAINPID 
PrivateTmp=true

[Install]
WantedBy=multi-user.target
  1. 重載系統服務
sudo systemctl daemon-reload
  1. 啓動redis
sudo systemctl start redis

redis集羣

雖然一主一從加哨兵可以解決普通場景下服務可用的問題,但是兩個節點分別存儲所有的緩存數據,這不僅導致容量受限,更是讓我們受限於機器配置最差的那一臺,這就是木桶效應。硬件垂直擴容並不能解決日益龐大的緩存數據量和提供能搞得可用性。

在古老的Redis版本中,水平擴容的能力來自於發送命令的客戶端,由客戶端路由不同的key給到不同的節點,下次讀取的時候,也按照相同方式路由key到指定節點拿到數據。如果接下來還希望增加擴容節點的話,就要對歷史緩存數據做遷移,遷移過程中爲保證數據一致性也要付出一定代價。爲了解決節點的不斷擴容,設計初期可以預先設置很多節點,以備日後使用,所有設計的節點都參與到分片當中,鑑於初期數據較少,可單臺服務器多個節點,在日後數據增多的情況下,只需要遷移節點到新的服務器。而不需要對數據進行重新分配等操作。但是這種做法依然讓我們覺得難維護,難遷移,難應對故障,遷移過程中也很難保證數據一致性,比如50個節點,任意一個節點想要停止並遷移服務器,都會引發數據不一致或者出現故障,只能停止集羣,等待遷移完成後,集羣上線。

Redis3.0提供了Cluster集羣。這個集羣的概念和前面提到的集羣有所不同。前面的集羣僅代表,多個節點間沒有相互的關係,只是根據客戶端路由分配key到不同的節點,所有節點共同分配所有數據。3.0的Cluster功能,擁有和單機實例相同的性能,幾乎支持所有命令,對於涉及多個鍵的命令,比如MGET,如果每一個鍵都在同一個節點則可以正常返回數據,否則提示錯誤。另外集羣中限制了0號數據庫,如果切換數據庫則會提示錯誤。

哨兵和集羣是兩個獨立的功能,但從特性來看哨兵可以視爲集羣的子集。當不需要數據分片或者已經利用客戶端分片的場景下哨兵已經足夠使用,如果需要水平擴容,Cluster是非常好的選擇。

每個集羣至少三臺主節點。

/opt/redis/src/redis-trib.rb create --replicas 1 10.1.2.75:6379 10.1.2.81:6379 10.1.2.82:6379 10.1.2.75:7379 10.1.2.75:8379 10.1.2.81:7379

CentOs7.3搭建Redis-4.0.1 Cluster集羣服務

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