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 由于集群 ...
随机推荐
- 【XSY2131】【BZOJ1857】【SCOI2010】传送带
Description 题目描述: 在一个二维平面上有两条传送带,每一条传送带可以看成是一条线段.两条传送带分别为线段AB和线段CD.小y在AB上的移动速度为P,在CD上的移动速度为Q,在平面上的移动 ...
- 基于xposed Hook框架实现个人免签支付方案
我的个人网站如何实现支付功能? 想必很多程序员都有过想开发一个自己的网站来获得一些额外的收入,但做这件事会遇到支付这个问题.目前个人网站是无法实现支付功能的. 今天我就给大家分享一下我的实现方案:&l ...
- sshd服务及基于密钥远程登陆(无需密码)
上一条博客说明了用sshd服务远程登陆另一个系统,但是需要密码,如果不用密码呢?有没有简便的方法呢?下面为大家介绍一下,也就是基于密钥的安全验证:需要在本地生成”密钥对“后将公钥传送至服务端,进行公共 ...
- it公司比较
1:本人西电通院2013届毕业硕士,根据今年找工作的情况以及身边同学的汇总,总结各大公司的待遇如下,吐血奉献给各位学弟学妹,公司比较全,你想去的公司不在这里面,基本上是无名小公司了:但无名小公司有时也 ...
- pandas处理excel的常用方法技巧(上)
1. 导库 import pandas as pd 2. 读取excel文件 这里要注意的就是第二个参数header如果不设置,pandas会默认把excel的第一行当作columns,header= ...
- html5 svg实现不规则形状图片触发事件
html5 svg实现不规则形状图片触发事件<pre><!DOCTYPE html><html lang="en"> <head> ...
- Docker(二) Dockerfile 使用介绍
前言 图解Docker 镜像.容器和 Dockerfile 的关系: 一.Dockerfile的概念 Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序.库.资源.配置等文件外,还包 ...
- maven打包记录1
在需要打包的项目目录下找到pom.xml文件 (过程中可能遇到 :-Dmaven.multiModuleProjectDirectory system property is not set. Che ...
- 使用VSCode调试Egret项目中的ts代码
发布一次Android项目后,会在代码里,生成对应的.map文件.这样就可以在编辑器里或是Chrome里面对相应的TS文件进行断点调试了. 实际只要在tsconfig.json里面配置一下," ...
- (C#)WPF:关于INotifyPropertyChanged接口的介绍
注意:INotifyPropertyChanged接口位于System.CompenentModel名称空间中,想使用INotifyPropertyChanged接口时,头文件需添加“using Sy ...