Redis集群生产环境源码安装
一、安装环境
操作系统:centos7.6
关闭防火墙、关闭selinux
redis1:192.168.26.128
redis2:192.168.26.129
二、用户环境
groupadd usr
useradd -g usr -md /usr/users/sw sw
cd /usr/users/sw/
mkdir app;mkdir backup
cd app
mkdir redis
make /applog
chown -R sw:usr /usr/users/sw
chown -R sw:usr /applog
三、系统参数修改,有几个系统参数需要调整,否则,在启动redis时会有几个WARNING:
1.redis的配置文件中,默认的最大客户端连接数为10000,要求至少最大文件描述符要10032个,我 们一般系统都会设置为65535
vim /etc/security/limits.conf添加以下内容
* soft nproc 12000
* hard nproc 12000
* soft nofile 65535
* hard nofile 65535
* hard stack 10240
* soft stack 10240
* hard sigpending 127934
* soft sigpending 127934
vim /etc/security/limits.d/20-nproc.conf 修改
* soft nproc 12000
2.在/etc/sysctl.conf中加入 net.core.somaxconn=511 ,然后执行 sysctl ‐p 生效,解决默认设 置为一个较低的值128的警告。
3. overcommit_memory 设置为0,在低内存环境下的后台保存可能失败。在文件 /etc/sysctl.conf 中添 加 vm.overcommit_memory = 1 ,然后重启或运行命令 sysctl vm.overcommit_memory=1
4.如果服务器的"Transparent Huge Pages (THP)"支持在内核中启用了。这将在使用Redis时造成延迟和 内存使用问题。使用root运行命令
echo never > /sys/kernel/mm/transparent_hugepage/enabled ,并且将它添加到你的/etc/rc.local中使在 重启后仍然保持生效来修复这个问题。在THP禁用之后Redis必须重启。
四、安装GCC编译工具,不然会有编译不过的问题
yum install gcc g++ gcc-c++ make -y
五、下载、解压、编译安装
su - sw
cd backup
wget http://download.redis.io/releases/redis-4.0.1.tar.gz
tar -xvf redis-4.0.1.tar.gz
cd redis-4.0.1
make
make PREFIX=/usr/users/sw/app/redis install
编译完成,redis已经安装在/usr/users/sw/app/redis/bin下面,几个文件大致作用为
redis‐benchmark:性能测试工具,测试Redis在你的系统及配置下的读写性能
redis‐check‐aof:用于修复出问题的AOF文件
redis‐check‐dump:用于修复出问题的dump.rdb文件
redis‐cli:Redis命令行交互客户端
redis‐sentinel:redis‐server别名
redis‐server:Redis服务器启动程序
六、redis的配置修改
在源码目录中,将配置文件模板redis.conf复制到redis配置文件目录中app/redis/conf/,因为一个虚拟机要启动单个
redis节点,所以配置文件要复制三份,分别用于用于规划的服务器端口号命名区别
mkdir ~/app/redis/conf
cp backup/redis-4.0.1/redis.conf ~/app/redis/conf/redis8601.conf
七、编辑redis8601.conf文件
1. 设置bind地址为本机IP,&&为本机IP,需要改为其他节点机器可访问的ip,否则创建集群时无法访问对应的端口,无法创建集群
bind 192.168.26.*
2. 修改daemonize为yes,即以后台程序方式运行
daemonize yes
3. 修改服务端口
port 8601
4. 修改pid生成路径
pidfile "/usr/uses/sw/app/redis/run/redis8601.pid"
需要手动创建run目录存放pid路径
mkdir /usr/users/sw/app/redis/run/
5. 修改日志文件的位置
logfile "/applog/redis8601/redis.log"
需要手动创建日志目录
mkdir /applog/redis8601/
6. 修改工作目录,数据文件,append only文件等会在该目录生成
dir "/applog/redisdump"
需要手动创建该目录
mkdir /applog/redisdump
7. 数据文件名
dbfilename "dump8601.rdb"
8. 是否每次更新操作进行日志记录
appendonly yes
文件名设置
appendfilename "appendonly8601.aof"
9. 是否支持集群
cluster-enabled yes
10. 集群配置文件名
cluster-config-file "nodes-8601.conf"
八、复制redis8601.conf文件为另外两个节点修改
1. cp redis8601.conf redis8602.conf
cp redis8601.conf redis8603.conf
2.统一替换配置文件redis8602.conf和redis8603.conf的8601为8602和8603
sed -i 's/8601/8602/g' redis8602.conf
sed -i 's/8601/8603/g' redis8603.conf
3.要手动创建8602和8603的日志目录
mkdir /applog/redis8602
mkdir /applog/redis8603
九、启动redis各节点服务
1、cd ~/app/redis/bin
./redis-server ~/app/redis/conf/redis8601.conf
./redis-server ~/app/redis/conf/redis8602.conf
./redis-server ~/app/redis/conf/redis8603 .conf
十、脚本启动
mkdir ~/bin
vim redis.sh
#!/bin/bash
case $1 in
start)
cd /usr/users/sw/app/redis/bin
./redis-server /usr/users/sw/app/redis/conf/redis8601.conf
./redis-server /usr/users/sw/app/redis/conf/redis8602.conf
./redis-server /usr/users/sw/app/redis/conf/redis8603.conf
ps -ef|grep redis|grep -v grep
echo "redis is started"
else
echo "redis is error"
exit 10
fi
;;
stop)
for pid in $(ps -ef|grep redis|grep -v "grep"|egrep -v "${0}"|awk -F " " '{print $2}'|uniq);do
kill -9 $pid >> /dev/null 2>&1
done
#echo "redis is stopped"
;;
restart)
${0} stop
${0} start
;;
esac
十一、集群搭建
1.yum -y install ruby-devel ruby-irb ruby-libs ruby-rdoc ruby rubygems-devel rubygems
2. 下载redis的gem并上传至服务器
https://rubygems.org/downloads/redis-3.3.0.gem
安装redis-gem
gem install --local redis‐3.3.3.gem
查看安装
gem list redis
3.使用 redis‐trib.rb 脚本创建集群 redis‐trib.rb 在redis的源码包的src目录中:
cd ~/backup/redis-4.0.1/src/
十二、 为redis各节点设置密码 为redis各节点设置密码,应用设置里也要设置redis的密码,如果密码不匹配,则应用无法连接上 redis。
密码均设置为:111111 修改配置文件 直接修改配置文件的方法,需要修改完后重启redis服务。
1.在每个节点的配置文件末尾加上: 然后重启所有节点的redis使密码生效即可。 masterauth "111111" requirepass "111111"
vim redis8601.conf 添加
masterauth "111111"
requirepass "111111"
2. 已设置了密码的节点创建集群,但此时创建集群,redis‐trib.rb脚本会提示无法连接到redis节点,这是因为ruby的redis gem中默认的客户 端连接密码为空,
所以导致redis‐trib.rb脚本无法创建集群。 可以修改ruby的redis gem的默认redis客户端密码即可
vi /usr/local/share/gems/gems/redis-3.3.3/lib/redis/client.rb 如果redis‐3.3.3.gem是使用非root安装的,则在用户主目录下搜索client.rb即可找到。
使用root编辑redis gem 里的client.rb文件: 第15行为设置密码,默认为空: :password => "111111", 修改完后,再回去执行redis‐trib.rb即可连接上redis进行集群操作。
vi /usr/local/share/gems/gems/redis-3.3.3/lib/redis/client.rb
15 :password => "111111",
3.然后进行集群搭建
./redis-trib.rb create --replicas 1 192.168.26.128:8601 192.168.26.128:8602 192.168.26.128:8603 192.168.26.129:8601 192.168.26.129:8602 192.168.26.129:8603
4.如果有报错[ERR] Node 192.168.26.129:8601 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.
删除各个节点下面的redis.log和dump下面的aof,rdb,conf文件
十三、查看集群状态
./redis-trib.rb check 192.168.26.129:8602
Redis集群生产环境源码安装的更多相关文章
- t-io 集群解决方案以及源码解析
t-io 集群解决方案以及源码解析 0x01 概要说明 本博客是基于老谭t-io showcase中的tio-websocket-showcase 示例来实现集群.看showcase 入门还是挺容易的 ...
- Linux上生产环境源码方式安装配置postgresql12
1.Linux上源码方式安装postgresql12 01.准备操作系统环境 echo "192.168.1.61 tsepg61" >> /etc/hosts mou ...
- centos环境源码安装postgresql9.4
源码安装简要步骤 下载PostgreSQL 源码包 下载根目录地址:http://ftp.postgresql.org/ 本人选择的是当前最新版本v9.4.1:http://ftp.postgre ...
- centos下配置LNMP环境(源码安装)
准备工作,安装依赖库 yum -y install gcc automake autoconf libtool make gcc-c++ glibc libxslt-devel libjpeg lib ...
- elasticsearch7.5.0+kibana-7.5.0+cerebro-0.8.5集群生产环境安装配置及通过elasticsearch-migration工具做新老集群数据迁移
一.服务器准备 目前有两台128G内存服务器,故准备每台启动两个es实例,再加一台虚机,共五个节点,保证down一台服务器两个节点数据不受影响. 二.系统初始化 参见我上一篇kafka系统初始化:ht ...
- Eureka应用注册与集群数据同步源码解析
在之前的EurekaClient自动装配及启动流程解析一文中我们提到过,在构造DiscoveryClient类时,会把自身注册到服务端,本文就来分析一下这个注册流程 客户端发起注册 boolean r ...
- Nacos配置中心集群原理及源码分析
Nacos作为配置中心,必然需要保证服务节点的高可用性,那么Nacos是如何实现集群的呢? 下面这个图,表示Nacos集群的部署图. Nacos集群工作原理 Nacos作为配置中心的集群结构中,是一种 ...
- redis 3.2.3的源码安装
Install necessary packages On CentOS : yum install wget make gcc tcl On CentOS yum install wget make ...
- redis集群离线安装环境搭建过程
本文是继上次redis集群重新整理的离线搭建环境,关于前期的redis集群准备工作参考我另一篇博客: http://www.cnblogs.com/qlqwjy/p/8566573.html 由于集群 ...
随机推荐
- 使用position设置经典的网站前端结构
能脱离文档流的设置: float:left/right position:absolute; 绝对定位 position:fixed; 固定定位 //搞清楚position的属性值的意思就容易明白 使 ...
- Linux 下的 redis安装
官网下载链接:https://redis.io/download redis安装流程,记录自己的实践,分享给需要的人. 1.选择Stable(5.0)下的Download 5.0.0 链接进行下载 ( ...
- Matplotlib 中常见的图形
# 导包 from matplotlib import pyplot as plt import numpy as np 线性图 简单线性图 在图表的所有类型中,线性图最为简单.线性图的各个数据点由一 ...
- 网络安全-主动信息收集篇第二章-三层网络发现之nmap和fping和Hping
nmap IP -sn nmap当目标IP在同一网段时,nmap会发送ARP包,当目标IP不在同一网段时nmap会发送ICMP的包. fping IP fping -g 参数支持对IP地址起始和结 ...
- [考试反思]1105csp-s模拟测试102: 贪婪
还是有点蠢... 多测没清空T3挂40...(只得了人口普查分20) 多测题要把样例复制粘两遍自测一下防止未清空出锅. 然而不算分... 其实到现在了算不算也不重要了吧... 而且其实T3只考虑最长路 ...
- [Usaco 2012 Feb]Cow coupons牛券:反悔型贪心
Description Farmer John needs new cows! There are N cows for sale (1 <= N <= 50,000), ...
- ITester软件测试小栈,快来点击领取你的能量值!
日供一卒,功不唐捐,这不是一个非正常更新的ITester软件测试小栈,不定期分享软件测试相关,包括功能.接口.自动化.性能.专项.测试开发,简历指点,面试助攻,群而不党,和而不同,如趋同,且同行.
- 『题解』Codeforces9D How many trees?
更好的阅读体验 Portal Portal1: Codeforces Portal2: Luogu Description In one very old text file there was wr ...
- PHP 导出微信公众号粉丝的方法
PHP 导出微信公众号粉丝的方法 先 user/get 获取关注者列表 然后user/info 根据openid读取信息 以上方法认证的订阅号支持
- Windows下Apache与PHP的安装与配置
下载Apache Apache的官网(http://httpd.apache.org) 1.把解压后的Apache拷贝到要安装的目标位置.建议拷贝到C盘根目录下,因为这是其默认设置. 2.我选择的是拷 ...