Redis3.0 Cluster集羣安裝

  • 部署圖

同一物理機部署6個Redis進程,700一、700二、7003端口爲Master進程、700四、700五、7006端口爲Slave進程。多機部署時注意配對的Master和Slave不在同一物理機上便可。 java

  • 安裝Redis

1. 下載源代碼文件redis-3.0.0.tar.gz
2. 解壓tar -xzvf redis-3.0.0..tar.gz
3. 進入目錄 cd redis-3.0.0
4. 編譯make
5. 安裝 make install
6. 建立6個目錄用來存放每一個進程的配置文件和數據mkdir 7001至7006
7. cp redis.conf 7001/至7006/文件夾下
至此7001至7006這6個目錄下均有redis.conf配置件。 node


  • 修改配置文件

6個redis.conf配置文件相同,注意修改下黃色字體部分的內容便可,其餘都相同 linux

配置選項 redis

ruby

描述 oracle

daemonize 字體

yes ui

 

logfile spa

"/opt/log/redis-7001.log" 日誌

 

databases

1

 

dir

/opt/oracle/redis-3.0.0/7001

用來存放數據的地方

cluster-enabled

yes

 

cluster-config-file

/opt/oracle/redis-3.0.0/7001/nodes.conf

 

cluster-node-timeout

15000

 

cluster-migration-barrier

1

 

cluster-require-full-coverage

yes

只要集羣中有一對Master-Slave不可用時,整個集羣不可用

  • 啓動Redis
按照以下命令分別啓動6個Redis進程
[root@inf-p01 redis-3.0.0]# redis-server 7001/redis.conf
啓動完畢後,6個Redis進程還沒有構成集羣。

  • 安裝Ruby
1. 下載源代碼文件ruby-2.1.6.tar.gz
2. 解壓tar -xzvf ruby-2.1.6.tar.gz
3. 進入目錄 cd ruby-2.1.6
4. 運行./configure –prefix=/usr/opt/oracle/ruby
5. 編譯make
6. 安裝 make install
7. 配置環境變量
/etc/profile文件中增長export PATH=/usr/opt/oracle/ruby/bin:$PATH
8. 執行source /etc/profile,使環境變量生效
9. 驗證ruby是否安裝成功,執行ruby –v,出現以下輸出,即ruby安裝OK。
ruby 2.1.6p336 (2015-04-13 revision 50298) [x86_64-linux]

  • 安裝redis gem
1. 下載源文件redis-3.2.1.gem
2. 安裝 gem install –l redis-3.2.1.gem
若是安裝redis-3.2.1.gem出錯,請執行以下步驟
安裝zlib
1. tar -xzvf zlib-1.2.8.tar.gz
2. cd zlib-1.2.8
3. ./configure --prefix=/opt/zlib
4. make
5. make install
安裝ruby-zlib
1. cd ruby-2.1.6/ext/zlib
2. ruby ./extconf.rb --with-zlib-dir=/opt/zlib
3. make
4. make install
最後安裝redis-3.2.1.gem
gem install -l redis-3.2.1.gem

  • 啓動集羣
1. 進入src目錄 cd /opt/oracle/redis-3.0.0/src
2. 執行./redis-trib.rb create --replicas 1 192.168.126.131:7001 192.168.126.131:7002 192.168.126.131:7003 192.168.126.131:7004 192.168.126.131:7005 192.168.126.131:7006
黃色部分爲本機IP,出現以下日誌即爲集羣部署OK
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
多機部署時,只要在其中一臺機器上執行./ redis-trib.rb就能夠了

  • 驗證
1. 進入redis控制檯 redis-cli –c –p 7001
2. set foo car
3. get foo
若是能取出數據即集羣安裝OK。

  • 使用
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
	<property name="maxTotal" value="30" />
	<property name="maxIdle" value="10" />
	<property name="minIdle" value="10" />
	<property name="blockWhenExhausted" value="true"></property>
	<property name="maxWaitMillis" value="3000" />
	<property name="testOnBorrow" value="false" />
	<property name="testOnReturn" value="false" />
	<property name="testWhileIdle" value="false" />
</bean>
<bean id="jedisCluster" class="redis.clients.jedis.JedisCluster">
	<constructor-arg index="0">
		<set>
			<bean class="redis.clients.jedis.HostAndPort">
				<constructor-arg index="0" value="192.168.126.131" />
				<constructor-arg index="1" value="7001" type="int" />
			</bean>
			<bean class="redis.clients.jedis.HostAndPort">
				<constructor-arg index="0" value="192.168.126.131" />
				<constructor-arg index="1" value="7002" type="int" />
			</bean>
			<bean class="redis.clients.jedis.HostAndPort">
				<constructor-arg index="0" value="192.168.126.131" />
				<constructor-arg index="1" value="7003" type="int" />
			</bean>
			<bean class="redis.clients.jedis.HostAndPort">
				<constructor-arg index="0" value="192.168.126.131" />
				<constructor-arg index="1" value="7004" type="int" />
			</bean>
			<bean class="redis.clients.jedis.HostAndPort">
				<constructor-arg index="0" value="192.168.126.131" />
				<constructor-arg index="1" value="7005" type="int" />
			</bean>
			<bean class="redis.clients.jedis.HostAndPort">
				<constructor-arg index="0" value="192.168.126.131" />
				<constructor-arg index="1" value="7006" type="int" />
			</bean>
		</set>
	</constructor-arg>
	<constructor-arg index="1" value="15000" type="int"></constructor-arg>
	<constructor-arg index="2" ref="jedisPoolConfig"></constructor-arg>
</bean>



@Test
public void test8(){
	System.out.println(jedisCluster);
	for(int i=0;i<1000;i++){
		jedisCluster.set(""+i, ""+i);
	}
	//使用時不用關閉的,JedisCluster內部會自動關閉
}
相關文章
相關標籤/搜索