redis 集群搭建以及redislive監測部署
redis 叢集建置以及監控環境
實作3主3從的叢集虛擬機器單機ip:192.168.40.128
叢集基本建置
#簡單下載
#透過
wget http://download.redis.io/releases/redis-4.0.10.tar.gz
解壓縮
tar zxvf redis-4.0.10.tar.gz
#指定安裝路徑,切換root使用者執行
make && make PREFIX=/usr/ local/redis install
,可能出現權限不夠的問題,sudo同樣會報錯,直接使用root進行操作。
安裝編譯工具
#sudo apt-get update
-
sudo apt-get install gcc
#sudo apt-get install make
sudo apt-get install tcl
#建立redis叢集資料夾
- ##因為是/usr,所以總是在root權限下操作
cd /usr/local/redis
mkdir cluster
cd cluster
mkdir 7000 7001 7002 7003 7004 7005
#修改設定檔複製redis conf內的config檔複製到六個資料夾中,並且修改以下內容
# 端口号 port 7000 # 后台启动 daemonize yes # 开启集群 cluster-enabled yes #集群节点配置文件 cluster-config-file nodes-7000.conf # 集群连接超时时间 cluster-node-timeout 5000 # 进程pid的文件位置 pidfile /home/ubuntu/redis-4.0.10/pid/redis-7000.pid #工作文件夹 dir "/home/ubuntu/redis-4.0.10/working" # 开启aof appendonly yes # aof文件路径 appendfilename "appendonly-7005.aof" # rdb文件路径 dbfilename dump-7000.rdb
#啟動腳本
- ##cd / home/ubuntu/redis-4.0.10/
- #touch start.link.sh
為了操作簡單,建立腳本
#修改啟動腳本,為 #!/bin/bash export BASE_FLOD="/usr/local/redis" {BASE_FLOD}/bin/redis-server /usr/local/redis/cluster/7000/redis.conf /usr/local/redis/bin/redis-server /usr/local/redis/cluster/7001/redis.conf /usr/local/redis/bin/redis-server /usr/local/redis/cluster/7002/redis.conf /usr/local/redis/bin/redis-server /usr/local/redis/cluster/7003/redis.conf /usr/local/redis/bin/redis-server /usr/local/redis/cluster/7004/redis.conf /usr/local/redis/bin/redis-server /usr/local/redis/cluster/7005/redis.conf #cd src #./redis-trib.rb create --replicas 1 192.168.40.128:7000 192.168.40.128:7001 192.168.40.128:7002 192.168.40.128:7003 192.168.40.128:7004 192.168.40.128:7005
登入後複製其中註解的是為了簡化初始啟動的,ip需要跟每個節點配置的redis.conf 中bind 屬性綁定的一致,啟動後可以透過ps -ef | grep redis指令查詢對應的執行緒是否啟動
- 關聯程式所使用的ruby寫的,所以要建置rudy的運作環境,需要安裝rudbygem
- sudo apt-get install ruby rubygems -y
- 運行
- redis-trib. rb create --replicas 1 192.168.40.128:7000 192.168.40.128:7001 192.168.40.128:7002 192.168.40.168.40.128:7002 192.168.40.128:7038:7002 192.168.40.128:7038. 28:7005
,檢查配置的資訊是否有錯誤,沒有直接yes就可以.
[OK] All 16384 slots covered.
代表接群啟動成功。
檢視叢集運作狀態:使用指令
./redis-trib.rb check 192.168.40.128:7000,進行叢集的狀態檢查
自帶測試工具redis-benchmark
- redis-benchmark - h 192.168.40.128 -p 6379 -c 100 -n 100000
100個並發連接,100000個請求,偵測host 為localhost 連接埠為6379的redis 伺服器效能。
- redis-benchmark -h 192.168.40.128 -p 6379 -q -d 100
測試存取大小為100位元組的封包的效能。
- redis-benchmark -t set,lpush -n 100000 -q
只測試某些操作的效能。
- redis-benchmark -n 100000 -q script load "redis.call('set','foo','bar')"
只測試某些數值存取的效能。
叢集建置初始不需要密碼,啟動完成後,先看每個節點的設定檔是否有讀寫權限,如果沒有讀寫權限,需要chmod修改的讀寫權限,透過
./redis-cli -c -p port config set masterauth password config set requirepass password config rewrite
分別連接每個節點進行設定
若要重啟發現連線不上,修改啟動腳本redis-.sh 99行,配置啟動腳本密碼啟動
@r = Redis.new(:host => @info[:host], :port => @info[:port], :timeout => 60,:password => "yangfan@1995")
/* *集群连接测试 */ @Test public void testJedisCluster() { Set<HostAndPort> nodes = new LinkedHashSet<>(); //所有主机节点ip和端口 nodes.add(new HostAndPort("192.168.40.128", 7000)); nodes.add(new HostAndPort("192.168.40.128", 7001)); nodes.add(new HostAndPort("192.168.40.128", 7002)); nodes.add(new HostAndPort("192.168.40.128", 7003)); nodes.add(new HostAndPort("192.168.40.128", 7004)); nodes.add(new HostAndPort("192.168.40.128", 7005)); //没有密码 //JedisCluster cluster = new JedisCluster(nodes); //添加密码调用 JedisCluster cluster = new JedisCluster(nodes, 5000, 5000, 10, "yangfan@1995", new GenericObjectPoolConfig()); //cluster.zadd("test_1", String.valueOf(""),"id_2"); System.out.println(cluster.zscore("test_1", "id_1")); try { cluster.close(); } catch (IOException e) { e.printStackTrace(); } }
- #主從模式是指定複製和持久化關係,指定了主從備份的關係
- 哨兵:當主資料庫遇到異常中斷服務後,開發者可以透過手動的方式選擇一個從資料庫來升格為主資料庫,以使得系統能夠繼續提供服務。主要是為了解決主從複製手動切換主從關係的偵測工具,可以自動切換主從。
使用哨兵,redis每个实例也是全量存储,每个redis存储的内容都是完整的数据,浪费内存且有木桶效应。为了最大化利用内存,可以采用集群,就是分布式存储。即每台redis存储不同的内容,共有16384个slot。每个redis分得一些slot,hash_slot = crc16(key) mod 16384 找到对应slot,键是可用键,如果有{}则取{}内的作为可用键,否则整个键是可用键集群至少需要3主3从,且每个实例使用不同的配置文件,主从不用配置,集群会自己选。
监控部署
RedisLive搭建部署
运行环境部署
git clone https://github.com/kumarnitin/RedisLive.git
下载redislive,解压缩unzip -o -d /home/ubuntu/ RedisLive-master.zip
进入src文件夹,复制example文件,编辑
"RedisServers": [ { "server": "192.168.40.128", "port" : 7000, "password" : "yangfan@1995" }, //...多个监听 ], "DataStoreType" : "redis", "RedisStatsServer": //存储的redis监听接口 { "server" : "127.0.0.1", "port" : 6379 }, "SqliteStatsStore" : { "path": "/home/ubuntu/redis-4.0.10/working/redislive.db" //进行存储的文件 } }
登入後複製ubuntu@ubuntu:~/redis-4.0.10$ mkdir pid
ubuntu@ubuntu:~/redis-4.0.10$ mkdir log
ubuntu@ubuntu:~/redis-4.0.10$ mkdir working
//保存aof,rdb,node-config文件。RedisLive分为两部分,其中一部分为监控脚本,另一部分为web服务,所以需要分别启动。`./redis-monitor.py
--duration=120`./redis-live.py
redis.clients.jedis.exceptions.JedisNoReachableClusterNodeException: No reachable node in cluster redis node的redis.conf 绑定ip设置为指定的redis节点ip,启动集群时只用指定ip启动,不使用192.168.40.128
connect refuse 关闭防火墙
No module named redis
查看python位置
which python
先备份
sudo cp /usr/bin/python /usr/bin/python_cp
删除
sudo rm /usr/bin/python
默认设置成python3.5,创建链接
sudo ln -s /usr/bin/python3.5 /usr/bin/python
Q&A
相关推荐:
以上是redis 集群搭建以及redislive監測部署的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱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)

Java 8引入了Stream API,提供了一種強大且表達力豐富的處理數據集合的方式。然而,使用Stream時,一個常見問題是:如何從forEach操作中中斷或返回? 傳統循環允許提前中斷或返回,但Stream的forEach方法並不直接支持這種方式。本文將解釋原因,並探討在Stream處理系統中實現提前終止的替代方法。 延伸閱讀: Java Stream API改進 理解Stream forEach forEach方法是一個終端操作,它對Stream中的每個元素執行一個操作。它的設計意圖是處

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

PHP和Python各有優勢,選擇應基於項目需求。 1.PHP適合web開發,語法簡單,執行效率高。 2.Python適用於數據科學和機器學習,語法簡潔,庫豐富。

膠囊是一種三維幾何圖形,由一個圓柱體和兩端各一個半球體組成。膠囊的體積可以通過將圓柱體的體積和兩端半球體的體積相加來計算。本教程將討論如何使用不同的方法在Java中計算給定膠囊的體積。 膠囊體積公式 膠囊體積的公式如下: 膠囊體積 = 圓柱體體積 兩個半球體體積 其中, r: 半球體的半徑。 h: 圓柱體的高度(不包括半球體)。 例子 1 輸入 半徑 = 5 單位 高度 = 10 單位 輸出 體積 = 1570.8 立方單位 解釋 使用公式計算體積: 體積 = π × r2 × h (4

PHP和Python各有優勢,適合不同場景。 1.PHP適用於web開發,提供內置web服務器和豐富函數庫。 2.Python適合數據科學和機器學習,語法簡潔且有強大標準庫。選擇時應根據項目需求決定。

PHP適合web開發,特別是在快速開發和處理動態內容方面表現出色,但不擅長數據科學和企業級應用。與Python相比,PHP在web開發中更具優勢,但在數據科學領域不如Python;與Java相比,PHP在企業級應用中表現較差,但在web開發中更靈活;與JavaScript相比,PHP在後端開發中更簡潔,但在前端開發中不如JavaScript。

Java是熱門程式語言,適合初學者和經驗豐富的開發者學習。本教學從基礎概念出發,逐步深入解說進階主題。安裝Java開發工具包後,可透過建立簡單的「Hello,World!」程式來實踐程式設計。理解程式碼後,使用命令提示字元編譯並執行程序,控制台上將輸出「Hello,World!」。學習Java開啟了程式設計之旅,隨著掌握程度加深,可創建更複雜的應用程式。
