一迅办、目錄
1、工具
2章蚣、安裝tcl
3站欺、安裝單機版redis
4、把redis設置為daemon進程纤垂,每次系統(tǒng)啟動矾策,redis進程一起啟動
5、安裝redis cluster
二峭沦、工具
2.1贾虽、tcl8.6.1-src.tar.gz
2.2、ruby-2.3.1.tar.gz
2.3吼鱼、redis-4.1.1.gem
2.4蓬豁、redis-3.2.8.tar.gz
2.5绰咽、openssl-1.0.2r.tar.gz
三、安裝tcl(安裝redis必須先要安裝tcl)
1地粪、shell可以說是unix\linux原生的取募,用戶通過它與系統(tǒng)內(nèi)核進行交換。特點就是直接驶忌,主要用來管理和使用系統(tǒng)矛辕。
2、perl可以說是對shell的擴展付魔,在編寫的靈活性聊品、跨平臺性都有提高,特別是在文本處理上有獨到的地方。另外几苍,perl的用途廣泛如:開發(fā)CGI翻屈,功能上遠遠不止維護系統(tǒng)這么簡單。
3妻坝、tcl可以看做C庫伸眶,十分方便被C\C++調(diào)用,另外刽宪,tcl容易被擴展或者縮減厘贼,十分方便被移植到特定的軟件平臺中,作為專業(yè)的腳本圣拄。我知道很多EDA工具內(nèi)嵌tcl語言嘴秸。
3.1、把tcl8.6.1-src.tar.gz通過WinSCP上傳到虛擬機中的/usr/local目錄下
3.2庇谆、依次運行如下命令:
tar -xzvf tcl8.6.1-src.tar.gz 解壓文件
cd /usr/local/tcl8.6.1/unix/
./configure
make & make install
四岳掐、安裝單機版redis
4.1、把redis-3.2.8.tar.gz通過WinSCP上傳到虛擬機中的/usr/local目錄下
4.2饭耳、依次運行如下命令:
tar -zxvf redis-3.2.8.tar.gz 解壓文件
cd redis-3.2.8
make && make test && make install
五串述、把redis設置為daemon進程,每次系統(tǒng)啟動寞肖,redis進程一起啟動
5.1纲酗、將redis的utils目錄下的redis_init_script腳本拷貝到linux的/etc/init.d目錄中,將redis_init_script重命名為redis_6379新蟆,6379是我們希望這個redis實例監(jiān)聽的端口號
5.2耕姊、修改redis_6379腳本的第6行的REDISPORT,設置為相同的端口號(默認就是6379)
5.3栅葡、創(chuàng)建兩個目錄:/etc/redis(存放redis的配置文件),/var/redis/6379(存放redis的持久化文件)
5.4尤泽、修改redis配置文件(默認在根目錄下欣簇,redis.conf)规脸,拷貝到/etc/redis目錄中,修改名稱為6379.conf
5.5熊咽、修改6379.conf中的部分配置為生產(chǎn)環(huán)境
protected-mode no 取消保護模式莫鸭,保護模式只能127.0.0.1訪問
daemonize yes 讓redis以daemon進程運行
pidfile /var/run/redis_6379.pid 設置redis的pid文件位置
bind 192.168.3.110
port 6379 設置redis的監(jiān)聽端口號
dir /var/redis/6379 設置持久化文件的存儲位置
logfile /var/log/redis/6379.log 設置日志文件位置
5.6、啟動redis横殴,依次執(zhí)行:
cd /etc/init.d,
chmod 777 redis_6379被因,賦讀寫執(zhí)行的權(quán)限(chmod -R 777 * 是遞歸把該目錄下的所有文件和其子文件全部賦權(quán)限)
./redis_6379 start 啟動
如果啟動不了,提示找不到redis-server衫仑,redis-cli梨与,此時把/usr/local/redis-3.2.8/src下的redis-server,redis-cli文狱、redis-sentinel拷貝到/usr/local/bin目錄下即可
5.7粥鞋、確認redis進程是否啟動,ps -ef | grep redis
5.8瞄崇、讓redis跟隨系統(tǒng)啟動自動啟動
在redis_6379腳本中呻粹,最上面,加入兩行注釋
# chkconfig: 2345 90 10
# description: Redis is a persistent key-value database
然后運行命令 chkconfig redis_6379 on
5.9苏研、重啟系統(tǒng)等浊,不手動啟動redis,直接連接redis摹蘑,可以連接上筹燕,表示配置成功
此時一個單機版的redis的生產(chǎn)環(huán)境已經(jīng)搭建好了,每次服務器重啟纹蝴,redis都會自動的啟動
六庄萎、安裝redis cluster
(redis cluster集群,要求至少3個master塘安,去組成一個高可用糠涛,健壯的分布式的集群,每個master都建議至少給一個slave兼犯,3個master忍捡,3個slave)
6.1、前提切黔,我在其它機器上啟動了六個redis(安裝步驟都如下)
2.2砸脊、創(chuàng)建三個目錄:
mkdir -p /etc/redis-cluster 存放集群配置信息,自動生成配置
mkdir -p /var/log/redis redis日志
mkdir -p /var/redis/7001 存放redis的rdb文件和aof文件
6.3纬霞、將redis的utils目錄下的redis_init_script腳本拷貝到linux的/etc/init.d目錄中凌埂,將redis_init_script重命名為redis_7001,7001是我們希望這個redis實例監(jiān)聽的端口號,并修改redis_7001配置文件中的REDISPORT=7001
6.4诗芜、修改/etc/redis/7001.conf中的部分配置為生產(chǎn)環(huán)境
port 7001
cluster-enabled yes
cluster-config-file /etc/redis-cluster/node-7001.conf
cluster-node-timeout 15000
daemonize yes
pidfile /var/run/redis_7001.pid
dir /var/redis/7001
logfile /var/log/redis/7001.log
bind 192.168.31.187
appendonly yes
6.5瞳抓、完成了一個redis環(huán)境的配置埃疫,依次再配置其余五個,分別為7002孩哑、7003栓霜、7004、7005横蜒、7006胳蛮,每個啟動腳本內(nèi),都修改對應的端口號
6.6丛晌、啟動6個redis實例
6.7仅炊、創(chuàng)建集群(需要安裝ruby、rubygems)
依次運行如下命令:
yum install -y ruby 安裝ruby
yum install -y rubygems 安裝rubygems
gem install redis ruby 安裝redis報錯
如果不報錯茵乱,即完成了安裝
上述命令在部分機器上是可以直接運行完成茂洒,成功安裝的,但在部分機器上運行第三條命令時會提示ruby版本太低瓶竭、openssl找不到的問題,下面依次解決這兩個問題:
問題:ruby版本太低智哀,最少需要2.2.2版本
ERROR: Error installing redis:
redis requires Ruby version >= 2.2.2.
此時的做法就是下載一個高版本的ruby(本人下載的ruby-2.3.1.tar.gz)送巡,上傳的/usr/local目錄下,然后依次運行如下命令:
tar -zxvf ruby-2.3.1.tar.gz 解壓
cd ruby-2.3.1
./configure -prefix=/usr/local/ruby
make && make install
cd /usr/local/ruby
cp bin/ruby /usr/local/bin
此時再用ruby -v的命令查看一下ruby的版本,發(fā)現(xiàn)版本號還是未變,這是因為/usr/bin下的ruby命令先運行坐儿,里面的ruby還沒有替換,用過cp bin/ruby /usr/bin/ruby替換一下即可菇民,此時再查看ruby版本,則為:ruby 2.3.1p112 (2016-04-26 revision 54768) [i686-linux]
6.8、再次運行g(shù)em install redis命令,報出兩個錯誤
問題:ruby cannot load such file -- zlib ruby 安裝redis報錯
解決辦法:
yum -y install zlib-devel 安裝zlib-devel
進入ruby源碼文件夾,安裝ruby自身提供的zlib包
cd ruby-2.3.1/ext/zlib
ruby ./extconf.rb
make && make install
6.9番电、再次運行g(shù)em install redis命令,報出一個錯誤
問題:獲取不到openssl
ERROR: While executing gem ... (Gem::Exception)
Unable to require openssl, install OpenSSL and rebuild ruby (preferred) or use non-HTTPS sources
解決辦法:
一般機器上可能安裝了率碾,但識別不了畜挥,通過openssl version可以查看到openssl的版本信息谭羔,但這個不管诵竭,我們直接去下載一個最新版的openssl裳朋,然后重新安裝(下載地址:[http://distfiles.macports.org/openssl/]泛范,我下載的是:openssl-1.0.2r.tar.gz)
a区赵、把openssl-1.0.2r.tar.gz上傳到/usr/local中
b骡送、tar -xzvf openssl-1.0.2r.tar.gz解壓安裝文件
c虐先、cd openssl-1.0.2r 進入解壓目錄
d、依次運行下面三條命令:
./config -fPIC --prefix=/usr/local/openssl enable-shared
./config -t
make && make install
openssl的配置文件必須要配置-fPIC參數(shù)派敷,如果沒有該參數(shù)下面的安裝中會出現(xiàn)問題蛹批!
安裝完成撰洗,可以通過openssl version檢測一下是否安裝成功
e、進入ruby源碼[/usr/loca/ruby-2.3.1]目錄下的ext/openssl 目錄腐芍,運行ruby extconf.rb命令:
[root@ceshi01 local]# cd ruby-2.3.1
[root@ceshi01 ruby-2.3.1]# cd ext/openssl
[root@ceshi01 openssl]# ruby extconf.rb
checking for t_open() in -lnsl... no
checking for socket() in -lsocket... no
checking for assert.h... yes
checking for openssl/ssl.h... no
f差导、提示沒有找到ssl.h, 因為出現(xiàn)了錯誤:openssl/ssl.h:沒有那個文件或目錄,此時運行下面的命令:ruby extconf.rb --with-openssl-include=/usr/local/openssl/include/ --with-openssl-lib=/usr/local/openssl/lib
[root@ceshi01 openssl]# ruby extconf.rb --with-openssl-include=/usr/local/openssl/include/ --with-openssl-lib=/usr/local/openssl/lib
checking for t_open() in -lnsl... no
checking for socket() in -lsocket... no
-------------------------中間略過---------------------------------------
checking for X509_ATTRIBUTE.single in openssl/x509.h... yes
checking for OPENSSL_FIPS in openssl/opensslconf.h... no
checking for EVP_CTRL_GCM_GET_TAG in openssl/evp.h... yes
creating extconf.h
creating Makefile
此時表示命令運行成功
g猪勇、接下來并且將ruby 源碼目錄下的include目錄軟鏈接到 / 目錄下
命令;ln -s /usr/local/ruby-2.3.1/include /
h设褐、再執(zhí)行make,如果在配置openssl時沒有-fPIC參數(shù)時就會報錯
[root@ceshi01 openssl]# make
compiling ossl_x509store.c
compiling ossl_pkey_dsa.c
compiling ossl_cipher.c
-------------------------中間略過---------------------------------------
compiling ossl_x509req.c
compiling ossl_pkey_ec.c
linking shared-object openssl.so
表示make成功
i泣刹、再運行make install命令
[root@ceshi01 openssl]# make install
/usr/bin/install -c -m 0755 openssl.so /usr/local/ruby/lib/ruby/site_ruby/2.3.0/i686-linux
installing default openssl libraries
[root@ceshi01 openssl]#
此時大功告成
6.10络断、再次運行g(shù)em install redis命令,報出一個錯誤
問題:下載不到ruby redis接口資源
ERROR: Could not find a valid gem 'redis' (>= 0), here is why:
Unable to download data from https://rubygems.org/ - SSL_connect returned=1 errno=0 state=error: certificate verify failed (https://api.rubygems.org/specs.4.8.gz)
解決辦法:(手動下載一個新版的项玛,我下載的是redis-4.1.1.gem,下載地址:[https://rubygems.org/gems/redis/versions/4.1.1])
把redis-4.1.1.gem上傳到/usr/local上
通過命令; gem install /usr/local/redis-4.1.1.gem安裝
[root@ceshi01 local]# gem install /usr/local/redis-4.1.1.gem
Successfully installed redis-4.1.1
Parsing documentation for redis-4.1.1
^CERROR: Interrupted
[root@ceshi01 local]# gem install /usr/local/redis-4.1.1.gem
Successfully installed redis-4.1.1
Parsing documentation for redis-4.1.1
Installing ri documentation for redis-4.1.1
Done installing documentation for redis after 1 seconds
WARNING: Unable to pull data from 'https://rubygems.org/': SSL_connect returned=1 errno=0 state=error: certificate verify failed (https://api.rubygems.org/specs.4.8.gz)
1 gem installed
這時ruby redis接口已經(jīng)安裝成功了弱判;
6.11襟沮、再次運行g(shù)em install redis命令
[root@ceshi01 local]# gem install redis
Successfully installed redis-4.1.1
Parsing documentation for redis-4.1.1
Done installing documentation for redis after 1 seconds
WARNING: Unable to pull data from 'https://rubygems.org/': SSL_connect returned=1 errno=0 state=error: certificate verify failed (https://api.rubygems.org/specs.4.8.gz)
1 gem installed
運行成功
此時Redis安裝好,此三個工具也安裝好了昌腰,這時我們來做一個Redis集群測試开伏,在一臺服務器中創(chuàng)建了6個Redis實例,開啟6個Redis服務
redis-trib.rb create --replicas 1 192.168.3.104:7001 192.168.3.104:7002 192.168.3.105:7003 192.168.3.105:7004 192.168.3.106:7005 192.168.3.106:7006
[root@eshop-cache02 init.d]# redis-trib.rb create --replicas 1 192.168.3.104:7001 192.168.3.104:7002 192.168.3.105:7003 192.168.3.105:7004 192.168.3.106:7005 192.168.3.106:7006
Creating cluster
Performing hash slots allocation on 6 nodes...
Using 3 masters:
192.168.3.104:7001
192.168.3.105:7003
192.168.3.106:7005
Adding replica 192.168.3.105:7004 to 192.168.3.104:7001
Adding replica 192.168.3.104:7002 to 192.168.3.105:7003
Adding replica 192.168.3.106:7006 to 192.168.3.106:7005
M: 95ced0a89c8e264957a5741fceed6fc2ff9160dc 192.168.3.104:7001
slots:0-5460 (5461 slots) master
S: 1db5527a96364e6a73a5584e2f2b8c44bb06921d 192.168.3.104:7002
replicates 29fbdff232cba71ae300fd8900e8e391d8455658
M: 29fbdff232cba71ae300fd8900e8e391d8455658 192.168.3.105:7003
slots:5461-10922 (5462 slots) master
S: f020b3cd13880d6b45bde073884d625181da5ada 192.168.3.105:7004
replicates 95ced0a89c8e264957a5741fceed6fc2ff9160dc
M: be88db01183aa149949ee8abbb92633081082a7f 192.168.3.106:7005
slots:10923-16383 (5461 slots) master
S: 40ecf79b7a802e12d4e32c7e11c63e00ddb7adac 192.168.3.106:7006
replicates be88db01183aa149949ee8abbb92633081082a7f
Can I set the above configuration? (type 'yes' to accept): ^C/usr/local/bin/redis-trib.rb:818:ingets': Interrupt from /usr/local/bin/redis-trib.rb:818:in
yes_or_die'
from /usr/local/bin/redis-trib.rb:1295:increate_cluster_cmd' from /usr/local/bin/redis-trib.rb:1701:in
<main>'
此時一個redis集群環(huán)境就已經(jīng)搭建好了遭商,可以通過redis-trib.rb check 192.168.3.105:7003命令查看集群幾點的信息
[root@eshop-cache02 init.d]# redis-trib.rb check 192.168.3.105:7004
Performing Cluster Check (using node 192.168.3.105:7004)
S: f020b3cd13880d6b45bde073884d625181da5ada 192.168.3.105:7004
slots: (0 slots) slave // 表示7004是一個slave節(jié)點固灵,通過hash slot算法分配0個slots
replicates 95ced0a89c8e264957a5741fceed6fc2ff9160dc
M: 29fbdff232cba71ae300fd8900e8e391d8455658 192.168.3.105:7003
slots:5461-10922 (5462 slots) master
1 additional replica(s)
S: 40ecf79b7a802e12d4e32c7e11c63e00ddb7adac 192.168.3.106:7006
slots: (0 slots) slave
replicates be88db01183aa149949ee8abbb92633081082a7f
M: 95ced0a89c8e264957a5741fceed6fc2ff9160dc 192.168.3.104:7001
slots:0-5460 (5461 slots) master
1 additional replica(s)
S: 1db5527a96364e6a73a5584e2f2b8c44bb06921d 192.168.3.104:7002
slots: (0 slots) slave
replicates 29fbdff232cba71ae300fd8900e8e391d8455658
M: be88db01183aa149949ee8abbb92633081082a7f 192.168.3.106:7005
slots:10923-16383 (5461 slots) master
1 additional replica(s)
[OK] All nodes agree about slots configuration.
Check for open slots...
Check slots coverage...
[OK] All 16384 slots covered.
[root@eshop-cache02 init.d]#
[root@eshop-cache02 init.d]#
[root@eshop-cache02 init.d]# redis-trib.rb check 192.168.3.105:7003
Performing Cluster Check (using node 192.168.3.105:7003)
M: 29fbdff232cba71ae300fd8900e8e391d8455658 192.168.3.105:7003
slots:5461-10922 (5462 slots) master // 表示7003是一個master 節(jié)點,通過hash slot算法分配5462個slots
1 additional replica(s)
S: 1db5527a96364e6a73a5584e2f2b8c44bb06921d 192.168.3.104:7002
slots: (0 slots) slave
replicates 29fbdff232cba71ae300fd8900e8e391d8455658
M: 95ced0a89c8e264957a5741fceed6fc2ff9160dc 192.168.3.104:7001
slots:0-5460 (5461 slots) master
1 additional replica(s)
S: 40ecf79b7a802e12d4e32c7e11c63e00ddb7adac 192.168.3.106:7006
slots: (0 slots) slave
replicates be88db01183aa149949ee8abbb92633081082a7f
S: f020b3cd13880d6b45bde073884d625181da5ada 192.168.3.105:7004
slots: (0 slots) slave
replicates 95ced0a89c8e264957a5741fceed6fc2ff9160dc
M: be88db01183aa149949ee8abbb92633081082a7f 192.168.3.106:7005
slots:10923-16383 (5461 slots) master
1 additional replica(s)
[OK] All nodes agree about slots configuration.
Check for open slots...
Check slots coverage...
[OK] All 16384 slots covered.
[root@eshop-cache02 init.d]#
redis cluster的優(yōu)點:讀寫分離+高可用+多master
讀寫分離:每個master都有一個slave
高可用:master宕機劫流,slave自動被切換過去
多master:橫向擴容支持更大數(shù)據(jù)量