kubernetes 1.5安裝 Redis 3.2.6 Cluster StatefulSet
聽說Redis 3以後安裝叢集比較簡單,幾個命令就可以完全搞定,在自己的電腦上面安裝試了下,果然比較爽。
今天準備把Redis 3的叢集安裝在K8s上面,通常的做法都是在github上面查詢是不是有人已經做過,果然很多。下面的程式碼基本上來自於github上面。不過就算用這個面的程式碼,在自己部署的時候也存在不少的問題。因為github上面的都是大神,很比比較小的問題不會寫的很清楚。
所以: 如果這個文件(blog)如何解決不了問題,就到github上面去查詢別的方法。
1>>>>>>>>>>>映象說明
使用的映象名: ausov/redis:3.2-alpine
先使用下面命令下載映象:
docker pull ausov/redis:3.2-alpine
這個映象如果無法下載,則需要自己手動build一下.
這個是編譯需要使用的檔案
[[email protected] alpine]# pwd
/root/k8s-redis/3.2/alpine
[[email protected] alpine]# ls
docker-entrypoint.sh Dockerfile redis.conf
cat docker-entrypoint.sh
#!/bin/sh
set -eox pipefail
#shopt -s nullglob
REDIS_CONF=${REDIS_CONF:-"/opt/k8s-redis/redis.conf"}
if [ "${1#-}" != "$1" ] || [ "${1%.conf}" != "$1" ]; then
set -- redis-server " [email protected]"
fi
if [ "$1" = 'redis-server' ] && [ -n "$SLAVEOF" ] && [ -z "$SENTINEL" ]; then
echo "Starting Redis replica"
set -- [email protected] "$REDIS_CONF" --slaveof "$SLAVEOF" 6379
elif [ "$1" = 'redis-server' ] && [ -n "$SENTINEL" ]; then
echo "Starting Redis sentinel"
while true; do
redis-cli -h $SENTINEL INFO
if [[ "$?" == "0" ]]; then
break
fi
echo "Connecting to master failed. Waiting..."
sleep 10
done
echo "sentinel monitor primary $SENTINEL 6379 2" >> "$REDIS_CONF"
echo "sentinel down-after-milliseconds primary 5000" >> "$REDIS_CONF"
echo "sentinel failover-timeout primary 10000" >> "$REDIS_CONF"
echo "sentinel parallel-syncs primary 1" >> "$REDIS_CONF"
set -- [email protected] "$REDIS_CONF" --port 26379 --sentinel --protected-mode no
elif [ "$1" = 'redis-server' ]; then
echo "Starting Redis master"
set -- [email protected] "$REDIS_CONF"
fi
exec "[email protected]"
這個檔案內容太多,我們在這裡看下可用的就OK。cat redis.conf | grep -Ev '(^#|^$)'
protected-mode no
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize no
supervised no
pidfile /var/run/redis_6379.pid
loglevel notice
logfile ""
databases 16
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir ./
slave-serve-stale-data yes
slave-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
slave-priority 100
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
aof-rewrite-incremental-fsync yes
cat Dockerfile
FROM redis:3.2-alpine
COPY ["redis.conf", "/opt/k8s-redis/"]
COPY ["docker-entrypoint.sh", "/usr/local/bin/"]
以上就是編譯需要使用到的檔案。cd到這個目錄,執行下面的命令。
docker build -t "ausov/redis:3.2-alpine" .
映象編譯完成以後,需要確保所有的節點都有這個映象。
2>>>>>>>>>>>部署安裝
部署安裝我們需要使用三個檔案,分別是:
primary.yml secondary.yml sentinel.yml
下面是檔案內容:
[[email protected] example]# cat primary.yml
apiVersion: v1
kind: Service
metadata:
name: redis-primary
labels:
app: redis-primary
spec:
ports:
- port: 6379
name: redis-primary
clusterIP: None
selector:
app: redis-primary
---
apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
name: redis-primary
spec:
serviceName: redis-primary
replicas: 1
template:
metadata:
labels:
app: redis-primary
spec:
terminationGracePeriodSeconds: 10
containers:
- name: redis-primary
image: ausov/redis:3.2-alpine
imagePullPolicy: IfNotPresent
ports:
- containerPort: 6379
name: redis-primary
volumeMounts:
- name: data
mountPath: /data
volumeClaimTemplates:
- metadata:
name: data
annotations:
volume.alpha.kubernetes.io/storage-class: anything
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 5Gi
[[email protected] example]# cat secondary.yml
apiVersion: v1
kind: Service
metadata:
name: redis-secondary
labels:
app: redis-secondary
spec:
ports:
- port: 6379
name: redis-secondary
clusterIP: None
selector:
app: redis-secondary
---
apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
name: redis-secondary
spec:
serviceName: redis-secondary
replicas: 2
template:
metadata:
labels:
app: redis-secondary
spec:
terminationGracePeriodSeconds: 10
containers:
- name: redis-secondary
image: ausov/redis:3.2-alpine
imagePullPolicy: IfNotPresent
env:
- name: SLAVEOF
value: redis-primary-0.redis-primary
ports:
- containerPort: 6379
name: redis-secondary
volumeMounts:
- name: data
mountPath: /data
volumeClaimTemplates:
- metadata:
name: data
annotations:
volume.alpha.kubernetes.io/storage-class: anything
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 5Gi
[[email protected] example]# cat sentinel.yml
apiVersion: v1
kind: Service
metadata:
name: redis-sentinel
labels:
app: redis-sentinel
spec:
ports:
- port: 26379
name: redis-sentinel
clusterIP: None
selector:
app: redis-sentinel
---
apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
name: redis-sentinel
spec:
serviceName: redis-sentinel
replicas: 3
template:
metadata:
labels:
app: redis-sentinel
spec:
terminationGracePeriodSeconds: 10
containers:
- name: redis-sentinel
image: ausov/redis:3.2-alpine
imagePullPolicy: IfNotPresent
env:
- name: SENTINEL
value: redis-primary-0.redis-primary
ports:
- containerPort: 26379
name: redis-sentinel
三個檔案都存在以後:
kubectl create -f primary.yml -f secondary.yml -f sentinel.yml
建立完成後,檢視一下pod
kubectl get pod
會得到以下資訊:
NAME READY STATUS RESTARTS AGE
redis-primary-0 1/1 Running 0 2d
redis-secondary-0 1/1 Running 0 2d
redis-secondary-1 1/1 Running 0 2d
redis-sentinel-0 1/1 Running 0 2d
redis-sentinel-1 1/1 Running 0 2d
redis-sentinel-2 1/1 Running 0 2d
下面是檢視StatefulSet的資訊:
[[email protected] example]# kubectl get statefulset
NAME DESIRED CURRENT AGE
redis-primary 1 1 2d
redis-secondary 2 2 2d
redis-sentinel 3 3 2d
必須要確保DESIRED和CURRENT的值是一樣的。
檢視持久儲存的資訊:
[[email protected]er example]# kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESSMODES AGE
data-redis-primary-0 Bound pvc-94534255-d614-11e6-955d-1866daed1b04 5Gi RWO 2d
data-redis-secondary-0 Bound pvc-9a8f2080-d614-11e6-955d-1866daed1b04 5Gi RWO 2d
data-redis-secondary-1 Bound pvc-9a9029b4-d614-11e6-955d-1866daed1b04 5Gi RWO 2d
我們在注意這裡的STATUS,是Bound。
如果不是,用命令
describe pvc data-redis-primary-0
如果出現下面的問題:
cannot find volume plugin for alpha provisioning
則需要修改檔案:
/etc/kubernetes/manifests/kube-controller-manager.json
增加引數: --enable-hostpath-provisioner=true
以下是截取了這個檔案的一部分:
"name": "kube-controller-manager",
"image": "gcr.io/google_containers/kube-controller-manager-amd64:v1.5.1",
"command": [
"kube-controller-manager",
"--address=127.0.0.1",
"--leader-elect",
"--master=127.0.0.1:8080",
"--cluster-name=kubernetes",
"--root-ca-file=/etc/kubernetes/pki/ca.pem",
"--service-account-private-key-file=/etc/kubernetes/pki/apiserver-key.pem",
"--cluster-signing-cert-file=/etc/kubernetes/pki/ca.pem",
"--cluster-signing-key-file=/etc/kubernetes/pki/ca-key.pem",
"--insecure-experimental-approve-all-kubelet-csrs-for-group=system:kubelet-bootstrap",
"--allocate-node-cidrs=true",
"--enable-hostpath-provisioner=true",
"--cluster-cidr=10.245.0.0/16"
],
修改儲存,重啟一下docker或kubelet.
通過上面的配置,Redis基本就配置完成:
這兩個WARNING暫不影響redis使用,解決方法過兩天再寫上。
11:M 04 Jan 09:45:23.515 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
11:M 04 Jan 09:45:23.515 # Server started, Redis version 3.2.1
11:M 04 Jan 09:45:23.515 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled'
as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
11:M 04 Jan 09:45:23.516 * The server is now ready to accept connections on port 6379
OK
相關推薦
kubernetes 1.5安裝 Redis 3.2.6 Cluster StatefulSet
聽說Redis 3以後安裝叢集比較簡單,幾個命令就可以完全搞定,在自己的電腦上面安裝試了下,果然比較爽。 今天準備把Redis 3的叢集安裝在K8s上面,通常的做法都是在github上面查詢是不是有人已經做過,果然很多。下面的程式碼基本上來自於github上面。不過就算用
【轉】CentOS 7.0 安裝Redis 3.2.1詳細過程和使用常見問題
nec count ges des useful 內存 warning before outside http://www.linuxidc.com/Linux/2016-09/135071.htm 環境:CentOS 7.0 Redis 3.2.1 Redis的安裝與啟動
CentOS7.2 安裝redis 3.0.6叢集
1.環境確認 a.系統版本檢視 [[email protected] ~]$ cat /etc/redhat-release CentOS Li
redis-3.2.6 安裝與配置
1.下載與解壓: [root@SZB-L0045333 Redis]# wget http://download.redis.io/releases/redis-3.2.6.tar.gz [root@SZB-L0045333 Redis]# tar xzf r
zabbix 2.4.5升級到3.2.6總結
zabbix1、如果php版本小於5.6,需要升級到5.6以上。2、保存數據庫不變,當zabbix server或zabbix proxy升級後啟動時會自動更新數據庫。3、整個架構的zabbix server 和 zabbix proxy都要同時升級。4、如果升級後新增到proxy的機器無法識別,先重啟pro
redis系列01:源碼安裝redis-3.2.10
創建 好的 color netstat mon compress 手動 idf sta 前段時間安裝好的redis,今天用腳本安裝的時候突然出現版本異常的問題,所以更新一篇為大家提供參考 本次安裝在CentOS6.5,采用的redis-3.2.10,最新的redis-4.0
安裝zabbix-3.2.6編譯報錯no acceptable C compiler
zabbix linux執行安裝zabbix在編譯的時候./configure --prefix=/usr/local/zabbix/ --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libc
centos6.8手動安裝redis-3.2.8的詳細步驟
CentOS6.8使用yum安裝有時候沒有比較新的版本,所以手動安裝,下面記錄一下步驟。 下載最新版本 以3.2.8為例,附上地址:redis-3.2.8.tar.gz http://download.redis.io/relea
CentOS7安裝Redis-3.2.8
so easy!!! 使用遠端登入工具我用的是 Private Shell 我仗義的把資源分享出來了 在這裡 連結:https://pan.baidu.com/s/1flXl8jx19IGsJ66HbCcFLg 提取碼:9eux 登入自己安裝的虛擬機器 [[
CentOS 7安裝 Redis 3.2.x(單機)
一、準備操作: 1、先安裝虛擬機器,這裡已安裝VmWare14.x; 2、安裝Linux作業系統,這裡安裝了CentOS7,另:確認已安裝rz/sz命令,如果沒有,執行:yum install lrzsz 即可; 3、下載Redis,在官網下載,這裡用的是Redis3.
centos6.9安裝redis-3.2.12
安裝gcc:yum install gcc-c++ 下載redis:連結:https://pan.baidu.com/s/1iDAy15GDZAz0hu_0NqyDvg 密碼:ng65 解壓tar -zxvf redis-3.2.12.tar.gz
Redis 3.2.6 Sentinel部署
CentOS 6.8 monitor: 192.168.1.100 master: 192.168.1.120 slave: 192.168.1.121 192.168.1
Linux安裝Redis-3.2.8流程和問題
以下是參考的一篇文章,基本上文章描述的問題都遇到了,也參考解決了。在這裡記錄下,以備後用。主要問題是依賴包和cpu64位不支援問題。需要改動的redis配置。 安裝依賴包 #yum install gcc gcc-c++ tcl -y PS:遇到的問題 a、如果不安
Windows7 Python-3.6 安裝PyCrypto(pycrypto 2.6.1)出現錯誤以及解決方法
windows python pycrypto 今天準備在Windows系統上基於python3.6安裝一個pycrypto 2.6.1模塊,很不幸的報了一堆錯誤,如下所示:running installrunning buildrunning build_pyrunning build_extw
1.1 學習之初;1.2 約定;1.3 認識Linux;1.4 創建虛擬機;1.5安裝centos7
安裝centos7給自己定個位:1. 定位:為更好地就業,不被社會淘汰,做一名合格的運維工程師2. 目標:半年左右學習完成基礎,之後跳槽運維工作,工作中多多積累經驗3. 工資:第一次奔著8k+起,一到兩年提升到15k-20k學習:1. 班主任每天安排的學習課程完成後,如果有空余時間精力再繼續預習新的課程,每天
1.1學習之初1.2約定1.3認識Linux1.4創建虛擬機1.5安裝CentOS7
size mar 職位 重要 pad lis 設定 ans otto 1.1 學習之初一、給自己定位1、學這個課程的目的是什麽?2、學完之後要做什麽職位?3、學完之後要再哪個城市發展二、給自己設定一個目標1、何時學完?2、何時跳槽3、第一份薪資多少4、一年後多少,兩年後多少
1.1 學習之初 1.2 約定 1.3 認識Linux 1.4 安裝虛擬機 1.5 安裝centos
2018-03-181,安裝好虛擬機後,文件---新建虛擬機--然後就下一步--,2下一步選如下:3.如下圖4.下一步直到如下圖5.下一步直到如下圖:6.下一步:7.下一步 直到完成即可。8.下面開始配置:編輯虛擬機:9.配置網絡:10.然後開始點 開啟此虛擬機--然後按上下左右箭頭按鍵--選擇第一個In
swarm叢集下搭建ELK:filebeat-5.6.11+redis-3.2+logstash-5.6+kibana-5.6+es5.6
上篇:https://blog.csdn.net/qq_35299863/article/details/83658048 之前介紹了叢集下tengine代理elasticsearch叢集,以及kibana實現CI/CD,現在介紹如何做一套ELK叢集 軟體環境:filebeat-5.
ambari 2.6.1.5安裝
系統要求:CentOS 7Python 2.7.xJDK1.8+安裝環境準備HDP版本相容性 https://supportmatrix.hortonworks.com/ 運維知識庫 > ambari安裝 > image2018-9-29_11-7-33.png 由於嚴格依賴版本,所以要先確
redis 3.2.5單機版安裝
持久 開機自啟動 ria amp 單機版 scrip all 停止 make 參照地址 http://www.mamicode.com/info-detail-1488639.html 前提:防火墻安裝,然後打開端口,設置開機啟動 一、redis源碼安裝 [root