Redis教程

腾讯redis2.3集群搭建

本文主要是介绍腾讯redis2.3集群搭建,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

环境规划:

IP 主机名 组件 配置 备注
192.168.3.81 node1 8核16G 磁盘X2-50G 没有8核16G无法添加服务器
192.168.3.82 node2 cache,proxy 8核16G 磁盘X2-50G
192.168.3.83 node3 cache,proxy 8核16G 磁盘X2-50G
192.168.3.84 node4 cache 8核16G 磁盘X2-50G
192.168.3.85 node5 cache 8核16G 磁盘X2-50G

安装包与配套文档

#官方安装包redis2.3
http://deliver-service-packet-1258877907.cos.ap-guangzhou.myqcloud.com/redis/V2.3/redis_for_tstack_x86-2.3-install.tar.gz?sign=q-sign-algorithm%3Dsha1%26q-ak%3DAKID54tUofahnurY7VvU8UjoZ4MN7aoxac2F%26q-sign-time%3D1622115037%3B1622374297%26q-key-time%3D1622115037%3B1622374297%26q-header-list%3Dhost%26q-url-param-list%3D%26q-signature%3Dd9463fdbd23851d8a7199289d1d620c62e60c811

#官方文档
http://deliver-service-packet-1258877907.cos.ap-guangzhou.myqcloud.com/redis/V2.3/Redis%E7%8B%AC%E7%AB%8B%E8%BE%93%E5%87%BA%E7%89%88%E4%B8%80%E9%94%AE%E9%83%A8%E7%BD%B2%E6%96%87%E6%A1%A3%282.3%E7%89%88%E6%9C%AC%29.docx?sign=q-sign-algorithm%3Dsha1%26q-ak%3DAKID54tUofahnurY7VvU8UjoZ4MN7aoxac2F%26q-sign-time%3D1622115040%3B1622374300%26q-key-time%3D1622115040%3B1622374300%26q-header-list%3Dhost%26q-url-param-list%3D%26q-signature%3D45337c72f36e1c1b73e630d84e05a86fe9aebcfd

基础优化

# --所有机器
#追加以下参数到/etc/sysctl.conf
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_timestamps = 1
net.ipv4.tcp_fin_timeout = 30
最后生效以上设置:
sysctl -p

# --cache_agent机器额外两条优化
#追加以下参数到/etc/sysctl.conf
net.core.somaxconn = 511
vm.swappiness = 1
最后生效以上设置:
sysctl -p

#--cache/Proxy机器配置以下设置:
echo never > /sys/kernel/mm/transparent_hugepage/enabled 

#如果需要重启生效,需要追加命令到/etc/rc.local
echo 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' >> /etc/rc.local


#--所有Cache/Proxy机器
 ulimit -SHn 65535
 
#配置重启生效
cat >>/etc/security/limits.conf<<eof
* soft nofile 65535
* hard nofile 65535
eof



#挂载磁盘

#每台服务器新增一块磁盘
echo "- - -" > /sys/class/scsi_host/host0/scan
echo "- - -" > /sys/class/scsi_host/host1/scan
echo "- - -" > /sys/class/scsi_host/host2/scan
lsblk

#挂载新磁盘
umount /dev/sdb
mkdir -p /data
mkfs.xfs -f /dev/sdb
echo '/dev/sdb   /data    xfs  defaults   0 0'  >>/etc/fstab
mount -a
df -h

中控机操作[第一台服务器]

#中控机服务器安装mariadb
yum install -y mariadb-server 
systemctl start mariadb
systemctl enable mariadb

#mariadb初始化:
[root@server1 ~]# mysql_secure_installation
Enter current password for root (enter for none):  <–初次运行直接回车
Set root password? [Y/n]   <– 是否设置root用户密码,输入y并回车或直接回车
New password:          <– 设置root用户的密码
Re-enter new password: <– 再输入一次你设置的密码
Password updated successfully!
… Success!
Remove anonymous users? [Y/n] <– 是否删除匿名用户,生产环境建议删除,所以直接回车
… Success!
Disallow root login remotely? [Y/n] n  <–是否禁止root远程登录,根据自己的需求选择Y/n并回车,建议禁止,这里不用禁止
… Success!
Remove test database and access to it? [Y/n] y <– 是否删除test数据库,直接回车
Reload privilege tables now? [Y/n] <– 是否重新加载权限表,直接回车
… Success!

连接数据库:
mysql -uroot -p123456

#创建用户并授权
GRANT ALL PRIVILEGES ON *.* to 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
FLUSH privileges;

GRANT ALL PRIVILEGES ON *.* TO 'mysql'@'%' IDENTIFIED BY '123456';
flush privileges;


#删除空账号密码的条目
use mysql;
delete from user where user='';
delete from user where password='';
select user,host,password from mysql.user;


#测试连接:
其他服务器安装一个mariadb,这里我直接用 node2 服务器测试连接node1的mysql
测试连接
yum install -y mariadb

#测试:
[root@node2 ~]#  mysql -umysql -p123456 -h 192.168.3.81
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 17
Server version: 5.5.68-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> 


#注意
1.	MySQL密码说明
MySQL密码中不可出现"@"、"$"特殊符号


#创建redis使用的数据库:
mysql -uroot -p123456

安装redis[中控机操作]

mkdir -p /root
tar xf redis_for_tstack_x86-2.3-install.tar.gz
cd redis_for_tstack_x86-2.3-install/ted.redis/product/product-redis-cc_ccagent/module-redis-sql-oper/TCE/


#去新增用户
mysql
GRANT ALL PRIVILEGES ON *.* TO 'mysql'@'%' IDENTIFIED BY '123456';
flush privileges;

#创建库用于导入数据
create database newcc_1001;


#测试链接
mysql -h192.168.3.81 -umysql -p123456

#登录mysql导入数据
cd /root/redis_for_tstack_x86-2.3-install/ted.redis/product/product-redis-cc_ccagent/module-redis-sql-oper/TCE
./python/bin/python3 sqlimport.py -u "mysql@192.168.3.81:3306:root:123456:newcc_1001" -d common -b control_center -v 2.3

#导入结果:
[root@node1 TCE]# pwd
/root/redis_for_tstack_x86-2.3-install/ted.redis/product/product-redis-cc_ccagent/module-redis-sql-oper/TCE
[root@node1 TCE]# ./python/bin/python3 sqlimport.py -u "mysql@192.168.3.81:3306:root:123456:newcc_1001" -d common -b control_center -v 2.3
Execute sql_file/control_center/common/V2.1.0_0__create_table.sql success!
Execute sql_file/control_center/common/V2.1.0_1__insert_data.sql success!
Execute sql_file/control_center/common/V2.2.0_3__create_table.sql success!
Execute sql_file/control_center/common/V2.2.0_4__insert_data.sql success!
Execute sql_file/control_center/common/V2.2.0_5__alter_table.sql success!
Execute sql_file/control_center/common/V2.3.0_11__create_table.sql success!
Execute sql_file/control_center/common/V2.3.0_12__insert_data.sql success!
_SQL:
        INSERT INTO flyway_schema_history(installed_rank, version, description, 
        type, script, checksum, installed_by, installed_on, execution_time, success) 
        VALUES("1", "2.1.0.0", "create table", "SQL", "V2.1.0_0__create_table.sql", "31594625acf5ef500f738254d609a6fe", "root", "2021-05-29 21:24:14", "0", 1),("2", "2.1.0.1", "insert data", "SQL", "V2.1.0_1__insert_data.sql", "688485c275ae37ecc3c42be43f2f5aae", "root", "2021-05-29 21:24:14", "0", 1),("3", "2.2.0.3", "create table", "SQL", "V2.2.0_3__create_table.sql", "5a252a96a892417f0c686b388b0aa41b", "root", "2021-05-29 21:24:14", "0", 1),("4", "2.2.0.4", "insert data", "SQL", "V2.2.0_4__insert_data.sql", "310ce80193368c95dd56c886b042e748", "root", "2021-05-29 21:24:14", "0", 1),("5", "2.2.0.5", "alter table", "SQL", "V2.2.0_5__alter_table.sql", "738a9d41e31c0ddce0a444ef1ef77ab2", "root", "2021-05-29 21:24:14", "0", 1),("6", "2.3.0.11", "create table", "SQL", "V2.3.0_11__create_table.sql", "228dbcb8764022cfe2eb43b0926e092f", "root", "2021-05-29 21:24:14", "0", 1),("7", "2.3.0.12", "insert data", "SQL", "V2.3.0_12__insert_data.sql", "019e0d99abfab2a3b002319a1ff42d73", "root", "2021-05-29 21:24:14", "0", 1)


#导入数据[value="17179869184" 就是内存16G服务器配置需要大于等于16G才可以添加"是这个意思?不知道"]:
use newcc_1001;
update sys_misc_config_t set value="http://192.168.3.81:8086/query" where type_id=5 and name="influxdb_url";
update sys_misc_config_t set value="http://192.168.3.81:9090/writer" where name="ctsdb_receivers" and type_id=0;
update sys_misc_config_t set value="http://192.168.3.81:9090/cc" where name="ctsdbserver_cc_url" and type_id=5;
insert into sys_misc_config_t values(5,"any","0.0.0.0");
update sys_misc_config_t set value="17179869184" where type_id=5 and name="mixed_min_memory";




#创建monitor数据库并导入相关数据:
mysql -h192.168.3.81 -umysql -p123456
create database monitor_1001;

#导入
./python/bin/python3 sqlimport.py -u "mysql@192.168.3.81:3306:root:123456:monitor_1001" -d common -b monitor_center -v 2.3


#创建
create database access_auth;
#导入
./python/bin/python3 sqlimport.py -u "mysql@192.168.3.81:3306:root:123456:access_auth" -d common -b access_auth -v 2.3


#创建
create database access_gateway;
#导入
./python/bin/python3 sqlimport.py -u "mysql@192.168.3.81:3306:root:123456:access_gateway" -d common -b access_gateway -v 2.3


#创建
create database ctsdb_server;
#导入
./python/bin/python3 sqlimport.py -u "mysql@192.168.3.81:3306:root:123456:ctsdb_server" -d common -b ctsdb_server -v 2.3


#到此为止数据库安装完毕





#安装 module-redis-control-center [安装到中控机]
#修改db_config.py
ip_a=$(hostname -I|awk '{print $1}')
cd /root/redis_for_tstack_x86-2.3-install/ted.redis/product/product-redis-cc_ccagent/module-redis-control-center/config
sed -i  "s#9.134.241.18#$(hostname -I|awk '{print $1}')#g" db_config.py
sed -i "s#myPassword#123456#g" db_config.py


#修改cluster_watcher.properties
cd /root/redis_for_tstack_x86-2.3-install/ted.redis/product/product-redis-cc_ccagent/module-redis-control-center/config
sed -i  "s#9.134.241.18#$(hostname -I|awk '{print $1}')#g" cluster_watcher.properties
sed -i "s#myPassword#123456#g" cluster_watcher.properties


#修改 MulServer.conf
InfluxIp=127.0.0.1
由于InfluxIp就在本机部署,所以不需要修改



#修改redis_prober.conf
cd /root/redis_for_tstack_x86-2.3-install/ted.redis/product/product-redis-cc_ccagent/module-redis-control-center/config
sed -i "s#myPassword#123456#g" redis_prober.conf
sed -i  "s#9.134.241.18#$(hostname -I|awk '{print $1}')#g" redis_prober.conf
sed -i  "s#9.134.240.167#$(hostname -I|awk '{print $1}')#g" redis_prober.conf



#修改key_analyzer.conf
sed -i  "s#9.134.240.167#$(hostname -I|awk '{print $1}')#g"  key_analyzer.conf



#修改patrol_redis.yaml
sed -i  "s#9.134.241.18#$(hostname -I|awk '{print $1}')#g"  patrol_redis.yaml
sed -i "s#myPassword#123456#g" patrol_redis.yaml


#以上修改无误后返回TCE目录执行安装操作:
cd ../TCE/
pwd
/root/redis_for_tstack_x86-2.3-install/ted.redis/product/product-redis-cc_ccagent/module-redis-control-center/TCE

#执行安装操作
sh -x install.sh all

#检查安装结果
sh check.sh
提示:
control_center is ok.
代表安装完成 redis-control





#安装influxdb
cd /root/redis_for_tstack_x86-2.3-install/ted.redis/product/product-redis-cc_ccagent/module-redis-influxdb
sed -i  "s#9.134.241.18#$(hostname -I|awk '{print $1}')#g" config/ctsdbserver.conf
sed -i "s#myPassword#123456#g" config/ctsdbserver.conf

cd /root/redis_for_tstack_x86-2.3-install/ted.redis/product/product-redis-cc_ccagent/module-redis-influxdb/TCE
sh -x install.sh all

检查安装结果:
sh check.sh

提示:
influxdb is ok. 
代表安装完成 influxdb




#安装lvs_keepalived
cd /root/redis_for_tstack_x86-2.3-install/ted.redis/product/product-redis-cc_ccagent/module-redis-lvs-keepalived
sed -i "s#eth1#eth0#g" config/redis_lvs.conf

#sed只是把网卡替换成了真实网卡名 eth0
[root@node1 module-redis-lvs-keepalived]# cat config/redis_lvs.conf
! Configuration File for keepalived
global_defs {               ##全局配置部分
    router_id LVS_MASTER       ##运行keepalived机器的一个标识
}
vrrp_instance VI_1 {       ##设置vrrp组,唯一且同一LVS服务器组要相同
    state MASTER               ##备份LVS服务器设置为BACKUP
    interface eth0       # #设置对外服务的接口(根据实际情况修改)
    virtual_router_id 51       ##设置虚拟路由标识
    priority 100               #设置优先级,数值越大,优先级越高,backup设置小于100,当master宕机后自动将backup高的变为master。
    advert_int 1               ##设置同步时间间隔
    authentication {           ##设置验证类型和密码,master和buckup一定要设置一样
        auth_type PASS
        auth_pass 1111
    }
virtual_ipaddress {        ##设置VIP,可以多个,每个占一行
       100.000.100.182
    }
}
include /data/redis/keepalived/etc/redis_lvs/*.conf


#修改lvsmanger.conf
cd /root/redis_for_tstack_x86-2.3-install/ted.redis/product/product-redis-cc_ccagent/module-redis-lvs-keepalived
sed -i "s#9.134.241.18#$(hostname -I|awk '{print $1}')#g"  config/lvsmanger.conf
sed -i "s#myPassword#123456#g" config/lvsmanger.conf
sed -i "s#:9010#$(hostname -I|awk '{print $1}'):9010#g" config/lvsmanger.conf
sed -i "s#106.55.61.42#$(hostname -I|awk '{print $1}')#g" config/lvsmanger.conf
cd ../TCE
[root@node1 TCE]# pwd
cd /root/redis_for_tstack_x86-2.3-install/ted.redis/product/product-redis-cc_ccagent/module-redis-lvs-keepalived/TCE
sh -x install.sh all

#检查:
sh -x check.sh
输出信息:
lvs_keepalived is ok.

安装 cache服务和proxy

看环境规划中有两台是作为cache服务的

分别是 
192.168.3.84
192.168.3.85


需要把安装包传到这两台服务器进行安装:
[可以全部安装 然后界面选择就好,我这里全部安装了,演示只装了2台]

# 192.168.3.84安装cache_agent服务:
scp -r root@192.168.3.81:/root/redis_for_tstack_x86-2.3-install.tar.gz ./
tar xf redis_for_tstack_x86-2.3-install.tar.gz
cd /root/redis_for_tstack_x86-2.3-install/ted.redis/product/product-redis-cc_ccagent/module-redis-cache-agent/

#IP改为管控机的ip,而不是本机IP
sed -i "s#9.134.240.167#192.168.3.81#g" config/mul_monitor_agent.conf


#结果如下:
[root@node4 module-redis-cache-agent]# cat config/mul_monitor_agent.conf
waterLogLevel 2
coloeLogLevel 2
ShmChangeIntval 600
reportIntval 60
LOG_FILE ../log

zkhost 10.24.0.10:2181,10.24.0.11:2181,10.24.0.12:2181
sysId 1001
cityid 1001

mulservers 192.168.3.81:55100


#安装cache-agent
cd /root/redis_for_tstack_x86-2.3-install/ted.redis/product/product-redis-cc_ccagent/module-redis-cache-agent/TCE
sh -x install.sh all

#检查cache-anget是否正常安装:
[root@node4 TCE]# sh  check.sh
cache_agent is ok.



--------------------------------------
# 192.168.3.85安装cache_agent服务:
scp -r module-redis-cache-agent root@192.168.3.84:/root
ssh 192.168.3.85
cd /root/module-redis-cache-agent

#IP改为管控机的ip,而不是本机IP
sed -i "s#9.134.240.167#192.168.1.81#g" config/mul_monitor_agent.conf


#结果如下:
[root@node4 module-redis-cache-agent]# cat config/mul_monitor_agent.conf
waterLogLevel 2
coloeLogLevel 2
ShmChangeIntval 600
reportIntval 60
LOG_FILE ../log

zkhost 10.24.0.10:2181,10.24.0.11:2181,10.24.0.12:2181
sysId 1001
cityid 1001

mulservers 192.168.1.81:55100



#安装cache-agent 【这里安装的服务器可以被动选择为proxy服务器或者cache服务器 由自己决定,只要安装了就可以把这个服务器加入到集群】
cd /root/redis_for_tstack_x86-2.3-install/ted.redis/product/product-redis-cc_ccagent/module-redis-cache-agent/TCE
sh -x install.sh all

#检查cache-anget是否正常安装:
[root@node4 TCE]# sh  check.sh
cache_agent is ok.




#安装web页面【中控机】
# 修改web地址
cd /root/redis_for_tstack_x86-2.3-install/ted.redis/product/product-redis-cc_ccagent/module-redis-user-interface/config
sed -i "s#9.134.241.18#192.168.3.81#g" application.yml

# 密钥生成工具添加执行权限:
chmod +x aestool 

#2. 生成密文的连接服务器的密码[123456] 如果服务器root密码不是这个就需要改成别的:
[root@node1 config]# ./aestool -e 123456
18hvlaMM7yvK6GKFsYbdFx31O8IaNw==

#3. 密码配置到application.yml文件中的poassword项中
url: jdbc:mysql://192.168.3.81:3306/access_auth?useSSL=false&characterEncoding=utf8
username: root
password: ENC(18hvlaMM7yvK6GKFsYbdFx31O8IaNw==)    # 生成服务器密码123456写在这里


#4.  找到: cluster-nodes: 127.0.0.1:6379 这行下方的密码应该是Tcdn@2007加密后的密码
./aestool -e Tcdn@2007
spk4z9YIKWTnYSZMwl+FG0zVLN0bDlselg==

vim application.yml:
--------------------------------------------------
redis:
  cluster-nodes: 127.0.0.1:6379
  mode: single
  password: ENC(spk4z9YIKWTnYSZMwl+FG0zVLN0bDlselg==)    #这个密码是Tcdn@2007加密后的密码,写入application.yml配置文件中
--------------------------------------------------


#8. 安装redis-user-interface [中控机]
cd /root/redis_for_tstack_x86-2.3-install/ted.redis/product/product-redis-cc_ccagent/module-redis-user-interface/TCE
sh -x install.sh all

#安装完成后通过check.sh 脚本来检测成功
sh check.sh

正确输出:
user_interface is ok.


此时打开web页面检查:
默认账号密码:
账号:qcloudAdmin
密码:qcloudAdmin




#添加proxy服务:
本质上proxy服务与cache服务配置相同
本文规划的proxy
192.168.3.81
192.168.3.82
192.168.3.83




192.168.3.81 第一台服务器啥也不用装

192.168.3.82安装proxy
# cd /root
# scp -r root@192.168.3.81:/root/redis_for_tstack_x86-2.3-install/ted.redis/product/product-redis-cc_ccagent/module-redis-cache-agent ./
# cd /root/module-redis-cache-agent
# sed -i "s#9.134.240.167#192.168.1.81#g" config/mul_monitor_agent.conf
# cd TCE
# sh -x install.sh all


192.168.3.83安装proxy
# cd /root
# scp -r root@192.168.3.81:/root/redis_for_tstack_x86-2.3-install/ted.redis/product/product-redis-cc_ccagent/module-redis-cache-agent ./
# cd /root/module-redis-cache-agent
# sed -i "s#9.134.240.167#192.168.1.81#g" config/mul_monitor_agent.conf
# cd TCE
# sh -x install.sh all


192.168.3.84安装cache
# cd /root
# scp -r root@192.168.3.81:/root/redis_for_tstack_x86-2.3-install/ted.redis/product/product-redis-cc_ccagent/module-redis-cache-agent ./
# cd /root/module-redis-cache-agent
# sed -i "s#9.134.240.167#192.168.1.81#g" config/mul_monitor_agent.conf
# cd TCE
# sh -x install.sh all


192.168.3.85安装cache
# cd /root
# scp -r root@192.168.3.81:/root/redis_for_tstack_x86-2.3-install/ted.redis/product/product-redis-cc_ccagent/module-redis-cache-agent ./
# cd /root/module-redis-cache-agent
# sed -i "s#9.134.240.167#192.168.1.81#g" config/mul_monitor_agent.conf
# cd TCE
# sh -x install.sh all

上架机器

#proxy 2台 [规划 192.168.3.82,192.168.3.83]
连接到数据库i:
mysql -h192.168.3.81 -umysql -p123456

#上架两台proxy
MariaDB [newcc_1001]> insert into interface_machine_t values("192.168.3.82",1,0);
MariaDB [newcc_1001]> insert into interface_machine_t values("192.168.3.83",1,0);
MariaDB [newcc_1001]> select * from interface_machine_t;
+--------------+-------+--------+
| ip           | state | idc_id |
+--------------+-------+--------+
| 192.168.3.82 |     1 |      0 |
| 192.168.3.83 |     1 |      0 |
+--------------+-------+--------+
2 rows in set (0.00 sec)



#proxy机器需要通过插入上架,cache机器可以直接web页面上架
cache 4台 [规划 192.168.3.82,192.168.3.83,192.168.3.84,192.168.3.85]
MariaDB [newcc_1001]> select * from redis_machine_t;
+--------------+-------+--------+
| ip           | state | idc_id |
+--------------+-------+--------+
| 192.168.3.82 |     1 |      0 |
| 192.168.3.83 |     1 |      0 |
| 192.168.3.84 |     1 |      0 |
| 192.168.3.85 |     1 |      0 |
+--------------+-------+--------+
4 rows in set (0.01 sec)

创建实例测试

这篇关于腾讯redis2.3集群搭建的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!