注:此博客或为自己所写,以供自己学习记录
废话不说了,直接开始整吧。。。
一个简单架构图
上边的简单架构图就体现了我需要做的事情,从架构图中可以看出是一个三个机器的集群,那么就首先需要准备三台服务器,这里我使用虚拟机来搭建,首先装好三台centos的机器,展示一下我的三台机器吧(机器的名称说明不了什么,其实这三台虚拟机是我为搭建服务器集群准备的,正好用上,哈哈):
这里我将tomcatserver2作为主机,ngnixserver作为从机1,databaseserver作为从机2。
准备好机器后,就是在linux系统上安装Redis了,简单说一下在linux上安装Redis的过程吧:
1.去Redis官网下载一个Redis在linux系统上的压缩包(版本自选),大概长这样:
2.使用xftp传送到linux系统里边
3.使用 tar -zxvf 压缩包名,对其进行解压
4.进入解压后的文件夹,使用make命令进行编译。
注意:由于Redis使用C语言编写,编译时需要安装c环境,所以没有安装c环境的话,在运行make命令时会报错,如果报错的话可以使用yum install gcc-c++命令安装c环境。安装好后运行一下make distclean(清楚上次编译失败的一些文件)命令后再重新运行make命令进行编译。
5.运行make install进行Redis的安装,安装成功后进入/usr/local/bin目录后你会发现出现了如下文件,说明安装成功:
6.安装成功后还需要对redis.conf做一下配置。这些配置包括允许外网链接Redis,主要配置有:
打开redis.conf文件找到bind,将127.0.0.1修改为0.0.0.0,即允许所有IP链接。
找到daemonize将原来的no修改为yes,即开启以守护进程启动。
7.开启6379端口:
vim /etc/sysconfig/iptables,在打开的文件中加入
-A INPUT -m state --state NEW -m tcp -p tcp -s 127.0.0.1 --dport 6379 -j ACCEPT
然后保存退出后,运行service iptables restart重启即可。
---------------------------------------------------华丽分割线-----------------------------------------------------
经过以上一通操作,机器就准备好了,接下来就开始进行集群的配置了:
1.主机器tomcatserver2的配置
其实主机器不需要过多的配置,只需要给主机器设置一个密码:
找到requirepass这里我将密码设置为123456.
2.从机的配置:
找到如下属性,
replicaof <主机IP> <主机端口>
masterauth <主机密码>
appendonly no将no改为yes
3.重启三台机器的redis服务
4.测试
可以使用Jedis集群进行测试,我的测试代码如下:
package service;
import redis.clients.jedis.*;
import java.util.LinkedList;
import java.util.List;
/**
* Hello world!
*
*/
public class App
{
private static ShardedJedisPool pool;
static {
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(100);
config.setMaxIdle(50);
config.setMaxWaitMillis(3000);
config.setTestOnBorrow(true);
config.setTestOnReturn(true);
// 链接主机
JedisShardInfo jedisShardInfo1 = new JedisShardInfo("192.168.199.151", 6379);
jedisShardInfo1.setPassword("123456");
List<JedisShardInfo> list = new LinkedList<JedisShardInfo>();
list.add(jedisShardInfo1);
pool = new ShardedJedisPool(config, list);
}
public static void main(String[] args) {
ShardedJedis jedis = pool.getResource();
String keys = "myname";
//主机写入信息,同步到从机
String vaule = jedis.set(keys, "mfx");
System.out.println("主机:"+jedis.get(keys));
//链接从机1
Jedis jedis1=new Jedis("192.168.199.116");
//从机可读出数据
System.out.println("从机1:"+jedis.get(keys));
//链接从机2
Jedis jedis2=new Jedis("192.168.199.233");
System.out.println("从机1:"+jedis.get(keys));
}
}
好了,现在主库可以负责写操作,从库负责读操作,系统性能也会大大提高