记得第一次自己搭建一个redis集群那是一步一个坑啊。填了一个又来一个。下面本人就我的经验用一个普通用户来搭建一个redis集群。
不相信! 来来来确认一下。
[www@redis1 ~]$ ps -ef|grep redis
www 7503 1 0 19:56 ? 00:00:16 redis-server 192.168.92.11:7004 [cluster]
www 7508 1 0 19:56 ? 00:00:15 redis-server 192.168.92.11:7003 [cluster]
www 7513 1 0 19:56 ? 00:00:09 redis-server 192.168.92.11:7005 [cluster]
www 7627 7366 0 21:04 pts/0 00:00:00 grep --color=auto redis
看到吧,这样都能搭建出来,就不必说用root了。
环境说明:
建立两台服务器进行安装。
软件下载目录:/data/package/
进入目录后下载redis4.0.1
sudo wget http://download.redis.io/releases/redis-4.0.1.tar.gz
安装依赖软件
sudo yum -y install gcc gcc-c++
进入到下载目录将软件解压。
sudo tar -xf redis-4.0.1.tar.gz
进入到安装目录安装软件
cd redis-4.0.1 && make && make install
创建redis集群目录
第一台服务器
sudo mkdir -p /data/soft/redis/{7000,7001,7002}
第二台服务器
sudo mkdir -p /data/soft/redis/{7003,7004,7005}
拷贝配置文件到集群目录。(先拷贝一个)
sudo cp redis.conf /data/soft/redis/7000/
两台服务器将集群目录赋予www权限
sudo chown www:www -R /data/soft/redis/
编辑集群配置文件
vim /data/soft/redis/7003/redis.conf
# 指定ip地址
bind 192.168.92.11
# 关闭保护模式
protected-mode no
# 设定端口号
port 7000
# 后台运行(守护进程)
daemonize yes
# pid
pidfile /var/run/redis_7000.pid
# 日志级别 先设置一个可以调试的日志级别,以便于排错。
loglevel debug
# 日志文件位置
logfile /log/redis/redis_7000.log
# 集群密码设置
masterauth 123456
# redis密码
requirepass 123456
# 每次写操作都记录一条日志
appendonly yes
# appendonly.aof文件位置
appendfilename appendonly.aof
# 开启集群 将注释去掉
cluster-enabled yes
# nodes文件位置
cluster-config-file nodes-7000.conf
# 超时时间,默认15秒,可以改成5秒
cluster-node-timeout 5000
将配置文件拷贝到其他节点,利用‘sed -i 's/7000/7001/g' /data/soft/redis/7001/redis.conf’将其他配置文件更改为其它的端口号和不同的文件名称。
创建日志文件并授予www用户权限。
sudo mkdir -p /log/redis/ && sudo chown www:www /log/redis
将redis命令授权给www用户。
sudo www:www /usr/local/bin/redis-*
启动所有节点。
redis-server /data/soft/redis/7000/redis.conf && redis-server /data/soft/redis/7001/redis.conf &&redis-server /data/soft/redis/7002/redis.conf
redis-server /data/soft/redis/7003/redis.conf && redis-server /data/soft/redis/7004/redis.conf && redis-server /data/soft/redis/7005/redis.conf
开始搭建集群
安装必备的软件ruby
安装rvm命令
先用命令检查最新的公钥“curl -ssL get.rvm.io | bash -s stable”
gpg: 已创建目录‘/home/admin/.gnupg’
gpg: 新的配置文件‘/home/admin/.gnupg/gpg.conf’已建立
gpg: 警告:在‘/home/admin/.gnupg/gpg.conf’里的选项于此次运行期间未被使用
gpg: 钥匙环‘/home/admin/.gnupg/pubring.gpg’已建立
gpg: 于 2019年01月04日 星期五 06时01分48秒 CST 创建的签名,使用 RSA,钥匙号 39499BDB
gpg: 无法检查签名:没有公钥
GPG signature verification failed for '/home/admin/.rvm/archives/rvm-1.29.7.tgz' - 'https://github.com/rvm/rvm/releases/download/1.29.7/1.29.7.tar.gz.asc'! Try to install GPG v2 and then fetch the public key:
gpg2 --keyserver hkp://pool.sks-keyservers.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
or if it fails:
command curl -sSL https://rvm.io/mpapis.asc | gpg2 --import -
command curl -sSL https://rvm.io/pkuczynski.asc | gpg2 --import -
In case of further problems with validation please refer to https://rvm.io/rvm/security
利用提示将公钥下载下来。
gpg2 --keyserver hkp://pool.sks-keyservers.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
然后下载rvm命令
curl -ssL get.rvm.io | bash -s stable
Downloading https://github.com/rvm/rvm/archive/1.29.7.tar.gz
Downloading https://github.com/rvm/rvm/releases/download/1.29.7/1.29.7.tar.gz.asc
gpg: 于 2019年01月04日 星期五 06时01分48秒 CST 创建的签名,使用 RSA,钥匙号 39499BDB
gpg: 完好的签名,来自于“Piotr Kuczynski <piotr.kuczynski@gmail.com>”
gpg: 警告:这把密钥未经受信任的签名认证!
gpg: 没有证据表明这个签名属于它所声称的持有者。
主钥指纹: 7D2B AF1C F37B 13E2 069D 6956 105B D0E7 3949 9BDB
GPG verified '/home/admin/.rvm/archives/rvm-1.29.7.tgz'
Installing RVM to /home/admin/.rvm/
Adding rvm PATH line to /home/admin/.profile /home/admin/.mkshrc /home/admin/.bashrc /home/admin/.zshrc.
Adding rvm loading line to /home/admin/.profile /home/admin/.bash_profile /home/admin/.zlogin.
Installation of RVM in /home/admin/.rvm/ is almost complete:
* To start using RVM you need to run `source /home/admin/.rvm/scripts/rvm`
in all your open shell windows, in rare cases you need to reopen all shell windows.
刷新bash文件
source /home/www/.rvm/scripts/rvm
查看有哪些版本的ruby安装包
rvm list known | grep ruby | head
[ruby-]1.8.6[-p420]
[ruby-]1.8.7[-head] # security released on head
[ruby-]1.9.1[-p431]
[ruby-]1.9.2[-p330]
[ruby-]1.9.3[-p551]
[ruby-]2.0.0[-p648]
[ruby-]2.1[.10]
[ruby-]2.2[.10]
[ruby-]2.3[.8]
[ruby-]2.4[.5]
安装高于2.2版本的ruby软件
rvm install 2.4.5
安装redis集群
gem install redis
启动集群
等等太早了,这么启动集群会启动不成功的,还得修改一个文件。
vim /home/www/.rvm/gems/ruby-2.4.1/gems/redis-4.1.0/lib/redis/client.rb
DEFAULTS = {
:url => lambda { ENV["REDIS_URL"] },
:scheme => "redis",
:host => "127.0.0.1",
:port => 6379,
:path => nil,
:timeout => 5.0,
:password => "123456",
:db => 0,
:driver => nil,
:id => nil,
:tcp_keepalive => 0,
:reconnect_attempts => 1,
:reconnect_delay => 0,
:reconnect_delay_max => 0.5,
:inherit_socket => false
}
一定要将password改成和redis配置文件里的一样。
现在可以启动集群了
sudo ln -s /data/package/redis-4.0.1/src/redis-trib.rb ~/bin/
redis-trib.rb create --replicas 1 192.168.92.10:7000 192.168.92.10:7001 192.168.92.10:7002 192.168.92.11:7003 192.168.92.11:7004 192.168.92.11:7005
在提示输入的地方输入yes即可启动集群
验证集群
redis-cli -c -h 192.168.92.10 -p 7000 -a 123456
192.168.92.10:7000> cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:6
cluster_my_epoch:1
cluster_stats_messages_ping_sent:12393
cluster_stats_messages_pong_sent:12398
cluster_stats_messages_sent:24791
cluster_stats_messages_ping_received:12393
cluster_stats_messages_pong_received:12393
cluster_stats_messages_meet_received:5
cluster_stats_messages_received:24791
192.168.92.10:7000> cluster nodes
97bf1e991e5df0c511b4ebe08ec67132d6d8362b 192.168.92.11:7003@17003 master - 0 1553331130000 4 connected 5461-10922
ea8a814edba8e6f9a3853b9064c4c4d44efd3fe4 192.168.92.10:7002@17002 slave 97bf1e991e5df0c511b4ebe08ec67132d6d8362b 0 1553331130000 4 connected
a04dcf668e221716f3f7bcf937cf5787933006fd 192.168.92.10:7000@17000 myself,master - 0 1553331128000 1 connected 0-5460
b406f10603109d7dc67a1cc1eb35f95f398c81aa 192.168.92.10:7001@17001 master - 0 1553331131404 2 connected 10923-16383
fafa6519a6a5d15d0b1497e1d4742226982a720a 192.168.92.11:7004@17004 slave a04dcf668e221716f3f7bcf937cf5787933006fd 0 1553331131000 5 connected
94d9df6bfd9b0fd7325604a56b3efd43250166b8 192.168.92.11:7005@17005 slave b406f10603109d7dc67a1cc1eb35f95f398c81aa 0 1553331130395 6 connected
192.168.92.10:7000> set foo test
-> Redirected to slot [12182] located at 192.168.92.10:7001
OK
192.168.92.10:7001> keys *
1) "foo"
能自动跳转则说明redis集群搭建成功。