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 由于集群 ...
随机推荐
- C++学习笔记12_各种文件和引入
1. 编译过程 预处理->编译->汇编->链接->.exe 预处理: ①将所有的“#define”删除,并且展开所有的宏定义 ②处理所有的条件编译指令,如:“#if”.“#if ...
- 关于 Java 中多线程的面试问题 详解
多线程细节: 1. 面试题: sleep 方法 和 wait 方法异同点是什么? 相同点: 可以让线程 处于 冻结状态. 不同点: 1. sleep 必须指定时间 wait 可以指定时间, 也可以不指 ...
- [考试反思]1103csp-s模拟测试99: 美梦
可能这次考得好的原因就是熬夜颓废到不算太晚?(啪) 但是是真心困. 考前跟akt说:我希望今天考一点那种不用动脑子,就是一直码的题. 然后开门T1一道线段树维护单调栈的板子我就...了 当时调了一上午 ...
- [考试反思]0809NOIP模拟测试15:解剖
说在前面: 不建议阅读.这里没有考试经验,只有一大堆负面情绪. 看了你不会有什么收获.看完了就不要怪我影响了你的心情. 以后不粘排行榜了.没什么意思没什么用. 但是我的意思并不是因为这次没考好的一时兴 ...
- 使用Typescript重构axios(二十三)——添加withCredentials属性
0. 系列文章 1.使用Typescript重构axios(一)--写在最前面 2.使用Typescript重构axios(二)--项目起手,跑通流程 3.使用Typescript重构axios(三) ...
- python学习之【第五篇】:Python中的元组及其所具有的方法
1.前言 Python的元组(tuple)与列表很相似,不同之处在于元组不能被修改,即元组一旦创建,就不能向元组中的增加新元素,不能删除元素中的元素,更不能修改元组中元素.但是元组可以访问任意元素,可 ...
- python学习之【第三篇】:Python中的字符串及其所具有的方法
1.前言 字符串str是Python中最常用的数据类型.我们可以使用单引号''或双引号""包裹一段字符来创建字符串. 2.字符串创建 str1 = 'hello world' st ...
- C#索引器与数组的区别
1.索引器的索引值类型不限定为整数 2.索引器允许重载 3.索引器不是一个变量 4.索引器以函数签名方式this标识,而属性采用名称来标识,名称可以任意 5.索引器不能使用static来进行声明,属性 ...
- mui 底部导航栏
mui 底部导航栏 <nav class="mui-bar mui-bar-tab " id="nav"> <a class="mu ...
- hdu 2516 取石子游戏 (Fibonacci博弈)
取石子游戏 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...