Keepalive,Twemproxy,Redis整体集群搭建记录
简介 搭建时间:2014/07/24 搭建系统:centos 6.2,centos 6.5 服务器架构 192.168.0.221 twemproxy,redis master01,redis slave02 192.168.0.220 twemproxy,redis master02,redis slave01 192.168.0.10 keepalived master 192.168.0.20 keepalived slav
简介
搭建时间:2014/07/24
搭建系统:centos 6.2,centos 6.5
服务器架构
192.168.0.221 twemproxy,redis master01,redis slave02
192.168.0.220 twemproxy,redis master02,redis slave01
192.168.0.10 keepalived master
192.168.0.20 keepalived slave
服务版本:
redis?: 2.4.10
keepalived: 1.2.2
twemproxy-master: 0.3.0
Redis
安装Redis
解压redis源码包;
根据README的介绍,完成安装步骤(make)
将redis文件夹mv到/usr/local下面,完成安装
配置redis的master/slave
新建redis配置文件路径
登录到192.168.0.221服务器
mkdir /var/redis/master01/{conf,data,logs,run};
mkdir /var/redis/slave02/{conf,data,logs,run};
登录到192.168.0.220服务器
mkdir /var/redis/master02/{conf,data,logs,run};
mkdir /var/redis/slave01/{conf,data,logs,run};
创建redis.conf文件(master和slave都大致一样,只有2行不同)
dir /var/redis/master01/? #redis的地址
pidfile ./run/redis.pid? #相对路径地址是相当dir来说的
logfile ./logs/stdout.log
dbfilename ./data/dump.rdb
bind 192.168.0.220 #监听服务地址
daemonize yes
requirepass 123qwe #服务密码
masterauth 123qwe? #这个只是在slave服上面配置,master不需要配置
slaveof 192.168.0.221 6601 #这个只是需要在slave上面配置,master不需要配置,指定master的地址
databases 16
port 6601 # 服务端口
timeout 0
loglevel verbose
save 900 1
save 300 10
rdbcompression yes
slave-serve-stale-data yes #如果master断了,slave是否提供服务
appendonly no
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
slowlog-log-slower-than 10000
slowlog-max-len 1024
启动redis服务 先启动redis master服务,然后再启动redis slave服务
登录到slave服务器,执行./redis-cli -h 192.168.0.220 -p 6601 -a 123qwe info,如果配置正确,最后会显示
role:slave
master_host:192.168.0.221
master_port:6601
master_link_status:up
master_last_io_seconds_ago:8
master_sync_in_progress:0
说明redis的master/slave已经完成配置
twemproxy
安装twemproxy
首先去下载最新的twemproxy,在github上面找到最新版本
如果是采用和我一样的系统,需要先更新autoconf,系统自带版本过低,编译会报错
CFLAGS=”-ggdb3 -O0″ autoreconf -fvi
./configure –prefix=/usr/local/twemproxy? –enable-debug=log
make && make install
配置twemproxy
这里配置是采用2台服务器搭建,每个服务器都安装一个twemproxy,配置一样,前端使用keepalived进行LVS分发
登陆到192.168.0.221/220,修改conf下面的nutcracker.yml,配置如下:
redis1:
listen: 0.0.0.0:10000
hash: fnv1a_64 #分发算法
distribution: ketama
timeout: 400
backlog: 1024
preconnect: true
auto_eject_hosts: true
server_retry_timeout: 2000 # 重试的时间
server_failure_limit: 3 #失败尝试次数,达到上限就取消后端分发权限
servers:
- 192.168.0.220:6601:1? # redis实例的ip,端口,权重
- 192.168.0.221:6601:1
redis启动服务
/usr/local/twemproxy/sbin/nutcracker -c /usr/local/twemproxy/conf/nutcracker.yml -d
redis测试服务
随便另外找一个安装有redis的服务器
./redis-cli -h 192.168.0.220 -p 10000 -a 123qwe
如果没有报错,说明成功!
keepalived
安装keepalived
登录到192.168.0.10
yum install kernel-devel
./configure –prefix=/usr/local/keepalived –with-kernel-dir=/usr/src/kernels/2.6.18-308.el5-x86_64/
make && make install
在make之前,如果现实如下结果,表示你的系统可以完成keepalived的各项功能
Keepalived configuration
————————
Keepalived version?????? : 1.2.2
Compiler???????????????? : gcc
Compiler flags?????????? : -g -O2 -DETHERTYPE_IPV6=0x86dd
Extra Lib??????????????? : -lpopt -lssl -lcrypto
Use IPVS Framework?????? : Yes # 要实现LVS功能,必须保证这个地方是YES
IPVS sync daemon support : Yes #
IPVS use libnl?????????? : No
Use VRRP Framework?????? : Yes
Use Debug flags????????? : No
keepalived配置
修改文件keepalived.conf
global_defs {
router_id wd_twemproxy
}vrrp_instance wd2 {
state BACKUP # master标准MASTER
nopreempt
interface em2
track_interface {
em2
}virtual_router_id 70
priority 100 # 权重高的作为master
advert_int 1
authentication {
auth_type PASS
auth_pass css74..tfwwapmzi4r
}virtual_ipaddress {
192.168.0.100/16 dev em2 scope global #定义VIP
}
}virtual_server 192.168.0.100 10000 {
delay_loop 6
lb_algo wrr
lb_kind DR
nat_mask 255.255.0.0
persistence_timeout 120
protocol TCPreal_server 192.168.0.220 10000 {
weight 1
TCP_CHECK {
connect_timeout 60
nb_get_retry 3
delay_before_retry 3
connect_port 10000
}
}real_server 192.168.0.221 10000 {
weight 1
TCP_CHECK {
connect_timeout 60
nb_get_retry 3
delay_before_retry 3
connect_port 10000
}
}
}
配置完成了之后,启动keepalived
/usr/local/keepalived/sbin/keepalived -f /usr/local/keepalived/etc/keepalived/keepalived.conf
执行 ipvsadm -Ln
显示如下:
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port
Forward Weight ActiveConn InActConn
TCP? 192.168.0.100:10000 wrr persistent 120
-> 192.168.0.220:10000???????? Route?? 1????? 0????????? 0
-> 192.168.0.221:10000???????? Route?? 1????? 0????????? 0
说明keepalived配置成功
总结(关键,可以首先阅读)
因为不想再次修改上面的内容,所以直接在后面添加说明,看了之后再根据下面的内容自己调整上面的配置!
坑爹第一季
以上的做法当你完全配置完成之后,可以发现无法提供服务,想知道为什么吗,我TM也不知道,反正就是不行,无法连接
[Mon Jul 28 10:57:29 2014] nc_proxy.c:336 accepted c 9 on p 8 from ‘unknown’
[Mon Jul 28 10:57:29 2014] nc_core.c:201 close c 9 ‘unknown’ on event FF00FF eof 0 done 0 rb 0 sb 0: Connection reset by pee
[Mon Jul 28 10:57:35 2014] nc_proxy.c:336 accepted c 9 on p 8 from ‘unknown’
[Mon Jul 28 10:57:35 2014] nc_core.c:201 close c 9 ‘unknown’ on event FF00FF eof 0 done 0 rb 0 sb 0: Connection reset by peer
以上为twemproxy启动之后报错信息,如果你也是采用keepalived作为最前端的LVS分发功能,那估计结果不会比我好到哪去。
解决办法:
放弃使用keepalived使用LVS的功能,最多使用热备功能,前端使用两个twemproxy,一个主,一个备,keepalived提供服务。
坑爹第二季
如果redis使用主备功能,不要使用密码认证,直接使用内网地址也很安全,不然twemproxy无法提供服务,切记,切记!!!
原文地址:Keepalive,Twemproxy,Redis整体集群搭建记录, 感谢原作者分享。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Redis集群模式通過分片將Redis實例部署到多個服務器,提高可擴展性和可用性。搭建步驟如下:創建奇數個Redis實例,端口不同;創建3個sentinel實例,監控Redis實例並進行故障轉移;配置sentinel配置文件,添加監控Redis實例信息和故障轉移設置;配置Redis實例配置文件,啟用集群模式並指定集群信息文件路徑;創建nodes.conf文件,包含各Redis實例的信息;啟動集群,執行create命令創建集群並指定副本數量;登錄集群執行CLUSTER INFO命令驗證集群狀態;使

如何清空 Redis 數據:使用 FLUSHALL 命令清除所有鍵值。使用 FLUSHDB 命令清除當前選定數據庫的鍵值。使用 SELECT 切換數據庫,再使用 FLUSHDB 清除多個數據庫。使用 DEL 命令刪除特定鍵。使用 redis-cli 工具清空數據。

要從 Redis 讀取隊列,需要獲取隊列名稱、使用 LPOP 命令讀取元素,並處理空隊列。具體步驟如下:獲取隊列名稱:以 "queue:" 前綴命名,如 "queue:my-queue"。使用 LPOP 命令:從隊列頭部彈出元素並返回其值,如 LPOP queue:my-queue。處理空隊列:如果隊列為空,LPOP 返回 nil,可先檢查隊列是否存在再讀取元素。

在CentOS系統上,您可以通過修改Redis配置文件或使用Redis命令來限制Lua腳本的執行時間,從而防止惡意腳本佔用過多資源。方法一:修改Redis配置文件定位Redis配置文件:Redis配置文件通常位於/etc/redis/redis.conf。編輯配置文件:使用文本編輯器(例如vi或nano)打開配置文件:sudovi/etc/redis/redis.conf設置Lua腳本執行時間限制:在配置文件中添加或修改以下行,設置Lua腳本的最大執行時間(單位:毫秒)

使用 Redis 命令行工具 (redis-cli) 可通過以下步驟管理和操作 Redis:連接到服務器,指定地址和端口。使用命令名稱和參數向服務器發送命令。使用 HELP 命令查看特定命令的幫助信息。使用 QUIT 命令退出命令行工具。

Redis計數器是一種使用Redis鍵值對存儲來實現計數操作的機制,包含以下步驟:創建計數器鍵、增加計數、減少計數、重置計數和獲取計數。 Redis計數器的優勢包括速度快、高並發、持久性和簡單易用。它可用於用戶訪問計數、實時指標跟踪、遊戲分數和排名以及訂單處理計數等場景。

Redis數據過期策略有兩種:定期刪除:定期掃描刪除過期鍵,可通過 expired-time-cap-remove-count、expired-time-cap-remove-delay 參數設置。惰性刪除:僅在讀取或寫入鍵時檢查刪除過期鍵,可通過 lazyfree-lazy-eviction、lazyfree-lazy-expire、lazyfree-lazy-user-del 參數設置。

在Debian系統中,readdir系統調用用於讀取目錄內容。如果其性能表現不佳,可嘗試以下優化策略:精簡目錄文件數量:盡可能將大型目錄拆分成多個小型目錄,降低每次readdir調用處理的項目數量。啟用目錄內容緩存:構建緩存機制,定期或在目錄內容變更時更新緩存,減少對readdir的頻繁調用。內存緩存(如Memcached或Redis)或本地緩存(如文件或數據庫)均可考慮。採用高效數據結構:如果自行實現目錄遍歷,選擇更高效的數據結構(例如哈希表而非線性搜索)存儲和訪問目錄信
