yum install cpp
yum install binutils
yum install glibc
yum install glibc-kernheaders
yum install glibc-common
yum install glibc-devel
yum install gcc
yum install make
yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
scl enable devtoolset-9 bash
echo "source /opt/rh/devtoolset-9/enable" >> /etc/profile
wget http://download.redis.io/releases/redis-6.0.6.tar.gz
tar vxf redis-6.0.6.tar.gz
cd redis-6.0.6/
make
make PREFIX=/usr/local/redis install
mkdir /usr/local/redis/conf
mkdir /usr/local/redis/data
cp ${REDIS_SRC_HOME}/redis.conf /usr/local/redis/conf/
# 后臺啟動的意思
daemonize yes
# IP綁定,redis不建議對公網開放,直接綁定 0.0.0.0 沒毛病
bind 0.0.0.0
# redis數據文件存放的目錄
dir /usr/local/redis/data
# 開啟AOF
appendonly yes
cd /usr/local/redis
./bin/redis-server ./conf/redis.conf
./bin/redis-cli
目前為了方便演示,在一臺機器上以不同的端口啟動 3 個服務。
進行之前,先進行單節點上的前 8 個步驟。
cp /usr/local/redis/conf/redis.conf /usr/local/redis/conf/redis-6380.conf
cp /usr/local/redis/conf/redis.conf /usr/local/redis/conf/redis-6381.conf
cp /usr/local/redis/conf/redis.conf /usr/local/redis/conf/redis-6382.conf
# 端口號(如果同一臺服務器上啟動,注意要修改為不同的端口)
port 6380
# 這個文件會自動生成(如果同一臺服務器上啟動,注意要修改為不同的端口)
pidfile /var/run/redis_6380.pid
/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis-6380.conf
/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis-6381.conf
/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis-6382.conf
/usr/local/redis/bin/redis-cli -p 6381 slaveof 127.0.0.1 6380
/usr/local/redis/bin/redis-cli -p 6382 slaveof 127.0.0.1 6380
/usr/local/redis/bin/redis-cli -p 6380 info Replication
cp ${REDIS_SRC_HOME}/sentinel.conf /usr/local/redis/conf/
cp /usr/local/redis/conf/sentinel.conf /usr/local/redis/conf/sentinel-26380.conf
cp /usr/local/redis/conf/sentinel.conf /usr/local/redis/conf/sentinel-26381.conf
cp /usr/local/redis/conf/sentinel.conf /usr/local/redis/conf/sentinel-26382.conf
# 綁定IP
bind 0.0.0.0
# 后臺運行
daemonize yes
# 默認yes,沒指定密碼或者指定IP的情況下,外網無法訪問
protected-mode no
# 哨兵的端口,客戶端通過這個端口來發現redis
port 26380
# 這個文件會自動生成(如果同一臺服務器上啟動,注意要修改為不同的端口)
pidfile /var/run/redis-sentinel-26380.pid
# sentinel監控的master的名字叫做mymaster,初始地址為 127.0.0.1 6380,2代表兩個及以上哨兵認定為死亡,才認為是真的死亡
sentinel monitor mymaster 127.0.0.1 6380 2
/usr/local/redis/bin/redis-server /usr/local/redis/conf/sentinel-26380.conf --sentinel
/usr/local/redis/bin/redis-server /usr/local/redis/conf/sentinel-26381.conf --sentinel
/usr/local/redis/bin/redis-server /usr/local/redis/conf/sentinel-26382.conf --sentinel
目前為了方便演示,在一臺機器上以不同的端口啟動 6 個服務。
進行之前,先進行單節點上的前 8 個步驟。
cp /usr/local/redis/conf/redis.conf /usr/local/redis/conf/redis-6381.conf
cp /usr/local/redis/conf/redis.conf /usr/local/redis/conf/redis-6382.conf
cp /usr/local/redis/conf/redis.conf /usr/local/redis/conf/redis-6383.conf
cp /usr/local/redis/conf/redis.conf /usr/local/redis/conf/redis-6384.conf
cp /usr/local/redis/conf/redis.conf /usr/local/redis/conf/redis-6385.conf
cp /usr/local/redis/conf/redis.conf /usr/local/redis/conf/redis-6386.conf
# 端口號(如果同一臺服務器上啟動,注意要修改為不同的端口)
port 6381
# 開啟集群
cluster-enabled yes
# 會自動生成在上面配置的dir目錄下(如果同一臺服務器上啟動,注意要修改為不同的端口)
cluster-config-file nodes-6381.conf
cluster-node-timeout 5000
# 這個文件會自動生成(如果同一臺服務器上啟動,注意要修改為不同的端口)
pidfile /var/run/redis_6381.pid
/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis-6381.conf
/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis-6382.conf
/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis-6383.conf
/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis-6384.conf
/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis-6385.conf
/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis-6386.conf
/usr/local/redis/bin/redis-cli --cluster create 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 127.0.0.1:6385 127.0.0.1:6386 --cluster-replicas 1
# 檢查集群,查看所有節點信息
/usr/local/redis/bin/redis-cli -c -h 127.0.0.1 -p 6381 cluster nodes
# 執行后的信息(節點id ip+端口 角色 masterid 處理的ping數量 最后一個pong時間 節點配置版本 節點連接狀態 slot槽分配情況)
386bfa4ad82ecf67800fb957899e6c0621cb73a6 127.0.0.1:6386@16386 slave 5352c77a1245f67f89bfaeb47caa04eb534e6724 0 1597911585458 1 connected
21a8ab725f458901e2d23781a9757b8ada023af1 127.0.0.1:6385@16385 slave 103e8326a6d583064a4d4448d285343536490659 0 1597911586000 3 connected
5352c77a1245f67f89bfaeb47caa04eb534e6724 127.0.0.1:6381@16381 myself,master - 0 1597911583000 1 connected 0-5460
103e8326a6d583064a4d4448d285343536490659 127.0.0.1:6383@16383 master - 0 1597911585052 3 connected 10923-16383
2d40bdd3bc9b01d67362110217123debb6f780cf 127.0.0.1:6384@16384 slave 2cd4da5b1a6d361216f620a21ec4e50da21a2e8a 0 1597911586582 2 connected
2cd4da5b1a6d361216f620a21ec4e50da21a2e8a 127.0.0.1:6382@16382 master - 0 1597911586479 2 connected 5461-10922
# 測試 Redis Cluster 的一種簡單方法是使用 redis-cli 命令行實用程序。
# -c 是支持cluster重定向。
/usr/local/redis/bin/redis-cli -c -h 127.0.0.1 -p 6381
# 然后執行一些命令,例如:
> set a 1
# 查看一個 key a 屬于哪一個槽位
> cluster keyslot
/usr/local/redis/bin/redis-cli --cluster reshard <host>:<port> --cluster-from <node-id> --cluster-to <node-id> --cluster-slots <number of slots> --cluster-yes
/usr/local/redis/bin/redis-cli --cluster check 127.0.0.1:6381
# 1、 啟動新節點
/usr/local/redis/bin/redis-server /usr/local/redis/conf/6387.conf
# 2、 加入到已經存在的集群作為master
/usr/local/redis/bin/redis-cli --cluster add-node 127.0.0.1:6387 127.0.0.1:6382
# 本質就是發送一個新節點通過 CLUSTER MEET 命令加入集群
# 新節點沒有分配 hash 槽
# 3、 加入到已經存在的集群作為 slave
/usr/local/redis/bin/redis-cli --cluster add-node 127.0.0.1:6387 127.0.0.1:6382 --cluster-slave
# 可以手工指定 master,否則就是選擇一個 slave 數量較少的master
/usr/local/redis/bin/redis-cli --cluster add-node 127.0.0.1:6387 127.0.0.1:6382 --cluster-slave --cluster-master-id <node-id>
# 還可以將空 master,轉換為 slave(終端操作)。
cluster replicate <master-node-id>
# 4、 檢查集群
/usr/local/redis/bin/redis-cli --cluster check 127.0.0.1:6382
今天給大家分享一個超級實用的腳本,一鍵自動安裝部署Redis的任意版本,記住是任意版本哦!
腳本用法:chmod 755 redis-install.sh && sh redis-install.sh 4.0.10 (后面跟的是你需要的版本號,需要什么版本就寫什么版本),我這里安裝的4.0.10
具體腳本內容如下展示:
#! /usr/bin/bash
##redis任何版本全程自動化源碼編譯安裝
##用法: sh redis-install.sh 4.0.10 (后面跟的是你需要的版本號,需要什么版本就寫什么版本),我這里安裝的4.0.10
version=$1
usage(){
echo "usage: $0 version"
}
if [ $# -ne 1 ]
then
usage
exit -1
fi
#Redis安裝包下載
cd /usr/local/src
if [ ! -f redis-${version}.tar.gz ]
then
curl -o /usr/local/src/redis-${version}.tar.gz http://download.redis.io/releases/redis-${version}.tar.gz
fi
#Redis依賴包安裝
yum clean all
yum makecache fast
yum -y install gcc gcc-c++ tcl
#編譯Redis所需要的gcc
yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
source /opt/rh/devtoolset-9/enable
echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile
gcc --version
##內系統參數核優化
cat >> /etc/rc.d/rc.local << "EOF"
##關閉Linux的THP(內存管理系統)通過使用更大的內存頁面,來減少具有大量內存的計算機上的TLB的開銷
if [ -f /sys/kernel/mm/transparent_hugepage/enabled ]
then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if [ -f /sys/kernel/mm/transparent_hugepage/defrag ]
then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
EOF
chmod u+x /etc/rc.d/rc.local
if [ -f /sys/kernel/mm/transparent_hugepage/enabled ]
then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if [ -f /sys/kernel/mm/transparent_hugepage/defrag ]
then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
cat >> /etc/sysctl.conf << "EOF"
#Linux系統內核參數優化
net.core.somaxconn = 2048
net.ipv4.tcp_max_syn_backlog = 2048
vm.overcommit_memory = 1
EOF
sysctl -p
cat > /etc/security/limits.conf << "EOF"
root soft nofile 65535
root hard nofile 65535
* soft nofile 65535
* hard nofile 65535
EOF
#Redis編譯安裝
cd /usr/local/src
tar -zxvf redis-${version}.tar.gz
cd /usr/local/src/redis-${version}
make
make PREFIX=/usr/local/redis install
#Redis基礎配置
mkdir -p /usr/local/redis/{etc,logs,data}
egrep -v "^$|^#" /usr/local/src/redis-${version}/redis.conf > /usr/local/redis/etc/redis.conf
#sed -i "s/bind 127.0.0.1/bind 0.0.0.0/g" /usr/local/redis/etc/redis.conf
sed -i "s/protected-mode yes/protected-mode no/g" /usr/local/redis/etc/redis.conf
sed -i "s/daemonize no/daemonize yes/g" /usr/local/redis/etc/redis.conf
sed -i "s/pidfile \/var\/run\/redis_6379.pid/pidfile \/usr\/local\/redis\/redis.pid/g" /usr/local/redis/etc/redis.conf
sed -i "s/dir \.\//dir \/usr\/local\/redis\/data/g" /usr/local/redis/etc/redis.conf
sed -i "s/logfile \"\"/logfile \"\/usr\/local\/redis\/logs\/redis.log\"/g" /usr/local/redis/etc/redis.conf
sed -i "s/dbfilename dump.rdb/dbfilename dump.rdb/g" /usr/local/redis/etc/redis.conf
sed -i "s/appendfilename \"appendonly.aof\"/appendfilename \"appendonly.aof\"/g" /usr/local/redis/etc/redis.conf
#PATH配置
echo "export PATH=${PATH}:/usr/local/redis/bin" >>/etc/profile
source /etc/profile
#啟動redis服務
/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf
#查看redis監聽端口
netstat -tanp|grep redis
執行腳本后開始自動安裝redis4.0.10
自動安裝Redis4.0.10所需要的的依賴包,如下圖所示:
自動開始解壓:
開始自動make
開始自動make install
安裝完成,Redis服務已成功啟動:
到這里整改自動安裝腳本已成功執行完畢,我們可以收到通過ps –ef|grep redis來查看服務狀態以及監聽端口。
登陸redis,執行簡單的語句:
關注我每天分享更多實用的運維知識哦[中國贊]