redis搭建三主三从架构
最近有在學redis,這次就模仿著搭建了一個。本來網上也有很多版本,不過按照百度出來的內容進行搭建總是有各種問題,磕磕碰碰總算搭建成功,在此記錄一下,供大家了解,防止以后自己忘記。
一、系統環境
VMware中安裝了三個centOS7系統,redis的版本是redis-3.2.1。
二、架構說明
三臺虛擬機充當三臺服務器,共六個實例,形成三主三從,其中存儲相同數據的主從節點不能落在同一臺機器上,目的是防止部署的Redis的虛擬機宕機從而造成主從節點全部失效。實驗機器的地址與端口如下:
192.168.200.131 7000
192.168.200.131 7001
192.168.200.132 7000
192.168.200.132 7001
192.168.200.133 7000
192.168.200.133 7001
三、安裝
mkdir /root/software
cd /root/software
wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz
tar -xzf tcl8.6.1-src.tar.gz -C /usr/local
cd /usr/local/tcl8.6.1/unix/
./configure? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//檢測安裝平臺的目標特征的。比如它會檢測該平臺是不是有CC或GCC。
make? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //進行編譯,它從Makefile中讀取指令,然后編譯。
make install? ? ? ? ? ? ? ? ? ? ? ? ? ?//進行安裝,它也從Makefile中讀取指令,安裝到指定的位置。
wget http://download.redis.io/releases/redis-3.2.1.tar.gz
tar –xzf redis-3.2.1.tar.gz
mv redis-3.2.1 /usr/local/redis
cd /usr/local/redis
make
make install
mkdir /usr/local/cluster
cd /usr/local/cluster
mkdir 7000 7001
cp /usr/local/redis/redis.conf /usr/local/cluster/7000
cp /usr/local/redis/redis.conf /usr/local/cluster/7001
vim /usr/local/cluster/7000/redis.conf
vim /usr/local/cluster/7001/redis.conf
修改redis.conf配置文件中下面選項(7001重復下面7000的情況),如:
port 7000? ? ? ? ? ? ? ? ? ? ? //指定當前Redis服務的端口,默認為6379 ,7001的修改成port 7001
daemonize yes? ? ? ? ? ? ? //配置redis作為守護進程運行
cluster-enabled yes? ? ? //集群啟用,開啟集群功能
bind 192.168.200.131? ?//綁定IP,即綁定本地回環地址。開啟這個配置時,redis 只接收來自于該 IP 地址列表的請求,如果不? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 進行設置,那么將處理所有請求。
appendonly yes? ? ? ? ? ? //配置數據持久化, 開啟aof日志。有需要就開啟,它會每次寫操作都記錄一條日志
protected-mode no? ? ? //關閉protected-mode模式,這樣便可以通過指定配置文件啟動,如下方命令啟動redis服務
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/usr/local/redis/src/redis-server /usr/local/cluster/7000/redis.conf
在防火墻中對端口7000、7001開放:
firewall-cmd --zone=public --add-port=7000/tcp --permanent
firewall-cmd --zone=public --add-port=7001/tcp --permanent
firewall-cmd –reload
7000與7001的redis.conf配置文件修改完后,開啟主從redis服務:
/usr/local/redis/src/redis-server /usr/local/cluster/7000/redis.conf
/usr/local/redis/src/redis-server /usr/local/cluster/7001/redis.conf
上述內容在三個服務器上全部執行過后,查看redis服務是否全部啟起來了,若是,則準備建集群。
四、建集群
為了使用主從節點不落在同一臺機器上,使用如下命令:每臺IP +端口交叉
/usr/local/redis/src/redis-trib.rb create --replicas 1 192.168.200.131:7000 192.168.200.133:7001 192.168.200.132:7000 192.168.200.131:7001 192.168.200.133:7000 192.168.200.132:7001
如果沒有報錯,那就證明你集群建立成功,下面的內容即可忽略,下面的內容是我建立集群過程中遇到的幾個問題。
1、注意:如果建立集群可能出現的報錯應該是會提示你沒有ruby,這時你需要安裝ruby。我第一次通過yum install ruby安裝的ruby版本是2.0.0的,這是因為在centos7中默認ruby是2.0.0版本,而低于redis4.0.6最低的最低要求的2.2版本,就好比我的報錯是提醒我ruby版本要大于等于2.2.2版本,所以需要進行升級或者直接安裝高版本的ruby。
wget https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.0.tar.gz
tar –xzf ruby-2.5.0.tar.gz –C /usr/local
cd /usr/local/ruby-2.5.0
./configure
make
make install
如果ruby安裝正常,輸入ruby –v命令將會輸出ruby的版本號。
2、當你安裝好ruby后,去建集群,可能會遇到如下報錯,
?/usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- redis (LoadError)
這是因為沒裝redis的第三方接口!既然ruby程序要訪問redis數據庫,總得有個連接接口。輸入命令 " gem install redis " 就能進行第三方接口安裝。
不過安裝第三方接口時也可能會報錯
ERROR:? Loading command: install (LoadError) no such file to load – zlib? ? ? ? ? ? ? ?//原因是gem運行缺少zlib庫支持
ERROR:? Loading command: install (LoadError) no such file to load – openssl? ? ? ? //原因是gem運行缺少openssl庫支持
對于這兩種報錯,安裝zlib庫和openssl庫就好了方法如下:
2.1、安裝zlib庫
yum install zlib-devel
cd /usr/local/ruby-2.5.0/ext/zlib? ? ? ? ? //進入到ruby安裝目錄下的ext/zlib位置
ruby extconf.rb? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//在操作下一步之前需要在Makefile文件中給路徑變量top_srcdir賦值,這個值就是ruby的安裝路徑,如下圖,如果不賦值,進行下一步make時會報錯
make && make install
2.2、 安裝openssl庫(與安裝zlib庫類似)
yum install openssl-devel
cd /usr/local/ruby-2.5.0/ext/openssl? ? ?//進入到ruby安裝目錄下的ext/openssl位置
ruby extconf.rb? ? ? ? ? //同樣在操作下一步之前需要在Makefile文件中給路徑變量top_srcdir賦值,這個值就是ruby的安裝路徑,如下圖,如果不賦值,進行下一步make時會報錯
?
make && make install
zlib庫和openssl庫安裝好后,再進行安裝redis第三方接口的操作,如下:
gem install redis
最后確認一下三臺服務器上有無防火墻開啟,若開啟,則需要添加防火墻白名單或者關閉防火墻。因為時間有限,我這邊是先關閉防火墻,之后有時間再添加白名單方式。(從生產環境的角度肯定是要開啟防火墻的,另外,centOS7的默認防火墻是firewall)
最終結果就如第四步驟一開始所示,顯示redis三主三從集群建立成功,圖片再貼一次
以上是我搭建過程中的整體情況,如果有問題,還望各位指出,謝謝。
總結
以上是生活随笔為你收集整理的redis搭建三主三从架构的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python多项式拟合:np.polyf
- 下一篇: 拟合算法模型