1. 程式人生 > >redis部署(3臺叢集)自動安裝

redis部署(3臺叢集)自動安裝

注:

  • 在配置時,本文件以【使用者:redis/redis】【目錄:/redis】為例進行說明
  • 文件中執行命令為藍色字型;配置檔案為粉色字型;重點標記為紅色字型
  1. 叢集部署
  • redis叢集為主從叢集,叢集伺服器需要三臺以上,本文件以三臺進行說明
  • 在部署時,每個主節點會自動生成一個從節點,比如192.168.1.1會啟動一個主節點,同時會在192.168.1.2啟動一個從節點
  • 主節點資料可讀寫,從節點資料只可讀,資料寫入時會自動選擇一個主節點儲存資料,同時資料同步至從節點
  • 當主節點掛掉時,從節點在10s內會自動升級為主節點,原來的主節點恢復後會自動變為從節點
  • 應用連線時,需要配置三個主節點的IP和埠
    1. 架構圖
    1. 準備
      1. 人工確認
        1. 關閉防火牆

臨時停止防火牆:service iptables stop

永久停止防火牆:chkconfig iptables off

        1. 關閉SELinux

臨時關閉SELinux:setenforce 0

永久關閉SELinux:vi etc/selinux/config  修改SELINUX=disabled

        1. 確認sshd服務配置正常

此步驟建議先不做,如果出現安裝問題再操作

  • 設定/etc/ssh/sshd_config
  1. 將Protocol設定為2
  2. 將AuthorizedKeysFile註釋掉
  3. 將PermitRootLogin設定為yes,允許root使用者登入
  4. 修改後重新啟動sshd服務:service sshd restart
  • 設定/etc/ssh/ssh_config

增加StrictHostKeyChecking no配置,防止主機IP變動引起的ssh登陸異常

Host *

StrictHostKeyChecking no

        1. 確認redis使用者的.bash_profile檔案內容

cat /redis/.bash_profile ,必須存在以下內容

-----------------------------------------------------------------------

if [ -f ~/.bashrc ]; then

        . ~/.bashrc

fi

-----------------------------------------------------------------------

      1. 安裝依賴包

此部分必須使用root使用者或sodu許可權使用者安裝

        1. 上傳prepare.tar

任意一臺,上傳prepare.tar至/tmp目錄,解壓tar xvf prepare.tar得到prepare目錄

        1. 上傳本地源壓縮包

先確認linux系統版本:lsb_release -a 或cat /etc/redhat-release 

在REPO資料夾找到對應linux版本的本地源壓縮包,上傳到prepare目錄

作業系統

本地源壓縮包

CentOS5/Redhat5

RHEL5_REPO.tar.gz

CentOS6/Redhat6/CGSL4

RHEL6_REPO.tar.gz

CentOS7/Redhat7

RHEL7_REPO.tar.gz

openSuSE11

SUSE11_REPO.tar.gz

openSuSE12

SUSE12_REPO.tar.gz

        1. 安裝

進入prepare目錄,執行./preinstall.sh 'IP1, IP2 , IP3' root 'root密碼',將會安裝依賴包到3臺伺服器

例:./preinstall.sh '192.168.1.1,192.168.1.2,192.168.1.3' root 'root123'

執行完之後出現以下內容證明依賴包安裝成功

---------------------------------------------------------------------------------------------------------------------------------

2017-03-22 16:00:24  *  Begin to prepare for installing on [192.168.1.1,192.168.1.2,192.168.1.3]

2017-03-22 16:00:24  *  Install python on the localhost...

<<<<<<<<<<<<<< python installed yet. <<<<<<<<<<<<<<<<

[Preparation Tool For Installing]

Starting preparation tasks...

Hosts to prepare: ['192.168.1.1', '192.168.1.2', '192.168.1.3']

192.168.1.2: ['RHEL6']

192.168.1.3: ['RHEL6']

192.168.1.1: ['RHEL6']

scp /tmp/prepare/RHEL6_REPO.tar.gz to all hosts...

scp /tmp/prepare/yum-install.sh to all hosts...

exec /tmp/yum-install.sh on all hosts[repo: file:///tmp/zcache-repo]...

192.168.1.2: <<<<<<<<<<<<<< python installed yet. <<<<<<<<<<<<<<<<

192.168.1.2: >>>>>>>>>>>>>> Installing the ruby >>>>>>>>>>>>>>>>

192.168.1.2: >>>>>>>>>>>>>> Installing the rubygems >>>>>>>>>>>>>>>>

192.168.1.2: <<<<<<<<<<<<<< lua installed yet. <<<<<<<<<<<<<<<<

192.168.1.2: >>>>>>>>>>>>>> Installing the tcl >>>>>>>>>>>>>>>>

192.168.1.3: <<<<<<<<<<<<<< python installed yet. <<<<<<<<<<<<<<<<

192.168.1.3: >>>>>>>>>>>>>> Installing the ruby >>>>>>>>>>>>>>>>

192.168.1.3: >>>>>>>>>>>>>> Installing the rubygems >>>>>>>>>>>>>>>>

192.168.1.3: <<<<<<<<<<<<<< lua installed yet. <<<<<<<<<<<<<<<<

192.168.1.3: >>>>>>>>>>>>>> Installing the tcl >>>>>>>>>>>>>>>>

192.168.1.1: <<<<<<<<<<<<<< python installed yet. <<<<<<<<<<<<<<<<

192.168.1.1: >>>>>>>>>>>>>> Installing the ruby >>>>>>>>>>>>>>>>

192.168.1.1: >>>>>>>>>>>>>> Installing the rubygems >>>>>>>>>>>>>>>>

192.168.1.1: <<<<<<<<<<<<<< lua installed yet. <<<<<<<<<<<<<<<<

192.168.1.1: >>>>>>>>>>>>>> Installing the tcl >>>>>>>>>>>>>>>>

scp /tmp/prepare/redis.gem to all hosts...

Install /tmp/redis.gem on all hosts...

End preparation: ok

EXIT...

2017-03-22 16:01:45  *  Preparing done

---------------------------------------------------------------------------------------------------------------------------------

        1. 檢查

3臺伺服器分別切換到redis使用者,執行gem list,需要出現以下內容

如果出現以下報錯,使用root執行chmod 755 /usr/lib/ruby

    1. 安裝redis叢集

redis可在相同機器安裝多套,必須使用者、使用者歸屬組、埠、路徑不同

redis安裝目錄如果是軟連線的目錄,必須把源目錄的許可權設定為755

      1. 檔案準備

從本章節開始全部使用redis使用者操作

任意一臺機器上傳rcinstall.tar至/redis目錄

tar xvf rcinstall.tar

      1. 配置

cd /redis/rcinstall

vi install.options

---------------------------------------------------------------------------------------------------------------------------------

hosts = 192.168.1.1,192.168.1.2,192.168.1.3         #redis叢集安裝的IP地址

install_dir = /redis                               #redis安裝目錄

data_dir = /redis/data                            #redis資料存放目錄

redis_cluster_group = redis                        #安裝redis使用者的歸屬組

redis_cluster_masters = 3                         #見引數說明

redis_cluster_port = 7380                         #見引數說明

redis_cluster_replicas = 1                         #見引數說明

redis_cluster_user = redis                         #安裝redis使用者名稱

redis_cluster_user_password = redis                #安裝redis使用者密碼

root_name = redis                               #安裝redis使用者名稱

root_password = redis                            #安裝redis使用者密碼

---------------------------------------------------------------------------------------------------------------------------------

配置引數說明

  • redis_cluster_masters:叢集擁有的master節點個數

master個數需要 >= 3,因為redis叢集是通過選舉機制來判斷節點可用性,需要有半數以上master節點投票才有效。

【如果master個數小於3,那麼將無法有效認定節點的可用性,當某個節點故障時,redis叢集也就無法在master故障時自動進行主從切換】

  • redis_cluster_port:redis節點開始分配的埠號

分配埠號段的開始值。例如redis_cluster_port= 7380,當主機A上部署2個redis節點,則三個節點使用的埠號將依次為7380,7381;(因為redis cluster的實現特性,redis節點同時將分別佔用17380,17381埠)

  • redis_cluster_replicas:叢集中每個節點的副本個數

叢集建立的節點個數為: redis_cluster_masters ×(1 + redis_cluster_replicas)

      1. 安裝

cd /redis/rcinstall

./rcinstall.py --silent=install.options

執行完之後出現以下內容證明安裝成功,並且所有的redis都已經啟動

---------------------------------------------------------------------------------------------------------------------------------

Redis Cluster Installation Tool

Starting installation tasks...

Begin Installation

['192.168.1.1', '192.168.1.2', '192.168.1.3']

Installing/Repairing SSH keys for redis

Creating redis Data Directory...

Install on all nodes...

Creating redis nodes: 6 = 3(masters) * [1 + 1(replicas)]

Init redis node...

Init redis nodes(192.168.1.1:7380) ok.

Init redis nodes(192.168.1.2:7380) ok.

Init redis nodes(192.168.1.3:7380) ok.

Init redis nodes(192.168.1.1:7381) ok.

Init redis nodes(192.168.1.2:7381) ok.

Init redis nodes(192.168.1.3:7381) ok.

>>> Creating cluster

Connecting to node 192.168.1.1:7380: OK

Connecting to node 192.168.1.2:7380: OK

Connecting to node 192.168.1.3:7380: OK

Connecting to node 192.168.1.1:7381: OK

Connecting to node 192.168.1.2:7381: OK

Connecting to node 192.168.1.3:7381: OK

>>> Performing hash slots allocation on 6 nodes...

Using 3 masters:

192.168.1.1:7380

192.168.1.2:7380

192.168.1.3:7380

Adding replica 192.168.1.2:7381 to 192.168.1.1:7380

Adding replica 192.168.1.3:7381 to 192.168.1.2:7380

Adding replica 192.168.1.1:7381 to 192.168.1.3:7380

M: 83e4b0f93c179372f6fc1ef698214d3ede6cb3de 192.168.1.1:7380

   slots:0-5460 (5461 slots) master

M: cc2a7c1836d1a6109e43fbdbcba1d94590d789df 192.168.1.2:7380

   slots:5461-10922 (5462 slots) master

M: a8f1cdfd6d0243675e5793f93d8e841268354327 192.168.1.3:7380

   slots:10923-16383 (5461 slots) master

S: f6fb2e2bfdbf90400639b8e84eba09908d340c4c 192.168.1.1:7381

   replicates a8f1cdfd6d0243675e5793f93d8e841268354327

S: a8194f5dc8ddab96c2a5dded5bb504036966a714 192.168.1.2:7381

   replicates 83e4b0f93c179372f6fc1ef698214d3ede6cb3de

S: c2b6531d694a69fe34de4c8813bb081768c2e2b1 192.168.1.3:7381

   replicates cc2a7c1836d1a6109e43fbdbcba1d94590d789df

>>> Nodes configuration updated

>>> Assign a different config epoch to each node

>>> Sending CLUSTER MEET messages to join the cluster

Waiting for the cluster to join...

>>> Performing Cluster Check (using node 192.168.1.1:7380)

M: 83e4b0f93c179372f6fc1ef698214d3ede6cb3de 192.168.1.1:7380

   slots:0-5460 (5461 slots) master

M: cc2a7c1836d1a6109e43fbdbcba1d94590d789df 192.168.1.2:7380

   slots:5461-10922 (5462 slots) master

M: a8f1cdfd6d0243675e5793f93d8e841268354327 192.168.1.3:7380

   slots:10923-16383 (5461 slots) master

M: f6fb2e2bfdbf90400639b8e84eba09908d340c4c 192.168.1.1:7381

   slots: (0 slots) master

   replicates a8f1cdfd6d0243675e5793f93d8e841268354327

M: a8194f5dc8ddab96c2a5dded5bb504036966a714 192.168.1.2:7381

   slots: (0 slots) master

   replicates 83e4b0f93c179372f6fc1ef698214d3ede6cb3de

M: c2b6531d694a69fe34de4c8813bb081768c2e2b1 192.168.1.3:7381

   slots: (0 slots) master

   replicates cc2a7c1836d1a6109e43fbdbcba1d94590d789df

[OK] All nodes agree about slots configuration.

>>> Check for open slots...

>>> Check slots coverage...

[OK] All 16384 slots covered.

---------------------------------------------------------------------------------------------------------------------------------

      1. 測試

進入任意一臺的/redis/redis/bin

cd /redis/redis/bin

./redis-cli -h 192.168.1.1 -p 7380 -c

---------------------------------------------------------------------------------------------------------------------------------

crm89:/redis/redis/bin $ ./redis-cli -h 192.168.1.1 -p 7380 -c

192.168.1.1:7380> set key 1

-> Redirected to slot [12539] located at 192.168.1.3:7380

OK

192.168.1.3:7380> get key

"1"

192.168.1.3:7380> exit

---------------------------------------------------------------------------------------------------------------------------------

      1. 啟動

進入任意一臺的/redis/redis/bin

cd /redis/redis/bin

./rc-start.sh

      1. 停止

進入任意一臺的/redis/redis/bin

cd /redis/redis/bin

./rc-stop.sh

      1. 更改快取型別
  • 方法1:

redis安裝時,默認同時寫快取和硬碟,快取和硬碟的資料保持一致性,如果只需要做記憶體快取時,需要修改以下位置,修改完之後需要重啟:

進入安裝目錄的conf目錄,修改所有redis-埠.conf

---------------------------------------------------------------------------------------------------------------------------------

#appendonly yes                  #註釋掉

appendonly no                  #增加此行

# appendfsync always

#appendfsync everysec             #註釋掉

 appendfsync no                  #放開

# no-appendfsync-on-rewrite yes

auto-aof-rewrite-percentage 200

auto-aof-rewrite-min-size 256mb

---------------------------------------------------------------------------------------------------------------------------------

  • 方法2:

或者登入每個節點關閉持久化,執行更改命令,不需要重啟

./redis-cli -h 192.168.1.1 -p 7380   #注意:每臺機器的所有redis節點都需登入執行

config set appendonly no         #關閉持久化

config rewrite                  #寫入配置檔案

      1. 重新安裝

在安裝中可能出錯,需要重新安裝redis,以下操作每臺機器都需要操作

  1. 使用ps -ef|grep 檢視redis的程序,並kill所有程序
  2. 刪除原安裝目錄的檔案,如:原配置的【install_dir = /redis 】,則刪除/redis/redis
  3. 重新進行安裝
      1. 節點資訊

執行以下命令可以檢視到節點資訊:

./redis-cli -h 192.168.1.1 -p 7380 cluster nodes

如果發現一臺機器有兩個從節點,需要升級一個從節點為主節點(預設為7380為節點埠),否則會出現單節點故障:

./redis-cli -h 192.168.1.1 -p 7380 cluster failover

相關推薦

redis部署3叢集自動安裝

注: 在配置時,本文件以【使用者:redis/redis】、【目錄:/redis】為例進行說明 文件中執行命令為藍色字型;配置檔案為粉色字型;重點標記為紅色字型 叢集部署 redis叢集為主從叢集,叢集伺服器需要三臺以上,本文件以三臺進行說明 在部署時,每個主節點會自動

Centos7 實現Hadoop-2.9.1分散式叢集搭建和部署機器

一、準備三臺虛擬機器hadoop 192.168.131.128 localhost131 192.168.131.131 localhost134 192.168.131.134(以上是我的三臺虛擬機器的hostname 和 ip)hadoop 是 master 的 hos

傳統分散式架構部署apache+tomcat叢集

背景: 單一伺服器部署應用在往往隨著應用人數的增加和頻率的提高及後續資料量的增大會達到瓶頸,伺服器會出現卡頓、崩潰等情況;所以在不改變應用結構的情況下只能進行部署架構上的變化,即使用apache(Apache HTTP Server(“httpd”))作為前置,進行負載均衡

redis叢集安裝2機器

準備:阿里雲,2臺機器 要求:通過2臺機器模擬6個節點,創建出3個master、3個salve 安裝過程 一:下載並解壓 cd /data/software wget http://download.redis.io/releases/redis-3.2.4.tar.gz

Tomcat環境部署以及tomcat多實例搭建同一機器

java 軟件 服務器 local profile 先搭建部署一臺Tomcat服務器:yum install -y gcc*本次需要的軟件安裝包:apache-tomcat-7.0.42.tar.gzjdk-7u25-linux-x64.tar.gznginx-1.2.6.tar.gz(安

redis入門3redis的配置獲取和修改

配置 daemonize rip require str 無限 文件的操作 idf master 一、Redis 配置 Redis 的配置文件位於 Redis 安裝目錄下,文件名為 redis.conf。 你可以通過 CONFIG 命令查看或設置配置項。 二、使用配置 1、

NoSQL初探之人人都愛Redis3使用Redis作為消息隊列服務場景應用案例

public 系統服務 就是 toolbar logfile manager 客戶端連接 狀態信息 朋友 http://www.cnblogs.com/edisonchou/p/3825682.html 一、消息隊列場景簡介   “消息”是在兩臺

Redis學習3-redis啟動

clas CA shu 本機 運行 指定 默認端口 bsp moni 前端啟動 tomcat,redis,mysql的端口號: mysql 3306 tomcat 8088 redis 6379 一,啟動redis服務: 例如當前位置在

zookeeper叢集的搭建相同

檢視jdk java -version 解除安裝自帶jdk rpm -qa|grep java rpm -e --nodeps tzdata-java-2015e-1.el6.noarch rpm -e -

REDIS學習3.2spring boot 使用redis作為快取

一,指定主鍵的生成規則 在3.1的基礎上修改RedisConfig @Configuration @EnableCaching public class RedisConfig extends CachingConfigurerSupport {     @Be

ArcGIS API for JavaScript 3.26本地部署不使用iis

首先大家可以將3.26下載到本地,隨便找一個資料夾進行存放。 1、以下是我的存放目錄:   me.html則是我寫程式碼的地方。 2、接下來看我在wbstrom中的工作引用資料夾 這裡我引用的是sublime資料夾,所以相對應我開啟me.html的時候,網站

lnmp部署在一上面

LNMP:L是linux,N是nginx,M是mysql,P是php 採用二進位制方式安裝mysql 初始化MYSQL配置檔案my.cnf 初始化命令如下 初始化故障排錯集錦 (1)沒有libaio函式庫的支援 (2)需要修改主機名解析,使其和uname -n一樣 (3)是/

Zookeeper叢集設計與安裝部署最完整版

首先準備好3個節點分別為hadoop01、hadoop02、hadoop03,接下來帶著大家一起搭建最小規模的Zookeeper分散式叢集。 1.叢集規劃 1.1主機規劃 使用準備的3個節點,搭建一個最小規模的Zookeeper分散式叢集。 1.2軟體規劃

大資料基礎環境之hbase3虛擬機器

hbase安裝   注意開啟hbase之前,需要將之前的hadoop叢集開啟 start-all.sh (啟動hadoop) zkServer.sh start(各個節點均執行) 1.同樣先建立工作路徑/usr/hbase,將/opt/soft下的hbase加壓到工作路

Hadoop叢集搭建電腦

電腦的作業系統是Ubuntu12.04 32位,ubuntu-12.04.4-desktop-i386.iso。 叢集介紹:         三臺電腦的使用者名稱都為hadoop        主機名:master    10.10.6.176        服務機:sl

CM部署3:cm網頁訪問設定

一、實現功能 cm進入網頁後,第一次配置過程。 二、步驟 1.同意協議,然後continue 2.選擇部署版本 選擇Cloudera Enterprise Data Hub Edition Trial有60天試用期,之後會適用免費的 3.檢視新主機,即server

redis學習3——字串

redis 字串 redis中的字串命令用於管理Redis中的字串值 常用命令 SET key value:此命令設定指定鍵的值。 GET key:獲取指定鍵的值。 GETSET key v

hadoop 叢集安裝部署大資料系列

什麼是大資料 基本概念 《資料處理》 在網際網路技術發展到現今階段,大量日常、工作等事務產生的資料都已經資訊化,人類產生的資料量相比以前有了爆炸式的增長,以前的傳統的資料處理技術已經無法勝任,需求催生技術,一套用來處理海量資料的軟體工具應運而生,這就是大資料!

NoSQL初探之人人都愛Redis3使用Redis作為訊息佇列服務場景應用案例

一、訊息佇列場景簡介   “訊息”是在兩臺計算機間傳送的資料單位。訊息可以非常簡單,例如只包含文字字串;也可以更復雜,可能包含嵌入物件。訊息被髮送到佇列中,“訊息佇列”是在訊息的傳輸過程中儲存訊息的容器。   在目前廣泛的Web應用中,都會出現一種場景:在某一個時刻,網站會迎來一個使用者請求的高峰期(

Mycat之——Mycat叢集部署基於HAProxy + Mycat

一、軟體版本 作業系統:CentOS-6.5-x86_64 JDK版本:jdk1.7.0_80 HAProxy版本:haproxy-1.5.19.tar.gz Mycat版本:Mycat-server-1.5.1-RELEASE-20170717215510-linux.