首先關閉selinux 而後reboot重啓機器 查看 SELinux狀態及關閉SELinux 標籤:SELinux 原創做品,容許轉載,轉載時請務必以超連接形式標明文章 原始出處 、做者信息和本聲明。不然將追究法律責任。http://bguncle.blog.51cto.com/3184079/957315 查看SELinux狀態: 一、/usr/sbin/sestatus -v ##若是SELinux status參數爲enabled即爲開啓狀態 SELinux status: enabled 二、getenforce ##也能夠用這個命令檢查 關閉SELinux: 一、臨時關閉(不用重啓機器): setenforce 0 ##設置SELinux 成爲permissive模式 ##setenforce 1 設置SELinux 成爲enforcing模式 二、修改配置文件須要重啓機器: 修改/etc/selinux/config 文件 將SELINUX=enforcing改成SELINUX=disabled 重啓機器便可 本文出自 「孤星雨」 博客,請務必保留此出處http://bguncle.blog.51cto.com/3184079/957315 https://github.com/mongodb/mongo-hadoop.git ; 1、jdk安裝 安裝版本爲 64位 jdk-7u51-linux-x64.tar.gz 1.解壓配置安裝 # mkdir -p /usr/lib/jvm # tar -zxvf jdk-7u51-linux-x64.tar.gz -C /usr/lib/jvm 二、添加jdk7.0到系統環境變量 # cp /etc/profile /etc/profile.bak #備份 # vi /etc/profile #編輯,在最後添加下面的內容 export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_51 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH 3.# source /etc/profile #使配置文件當即生效 2、安裝zookeeper 版本zookeeper-3.5.0 前提條件是已安裝了jdk 單機模式 1.單 機安裝很是簡單,只要獲取到 Zookeeper 的壓縮包並解壓到某個目錄 如:/home/zookeeper-3.5.0-alpha 下 2.修改配置信息 在你執行啓動腳本以前,還有幾個基本的配置項須要配置一下,Zookeeper 的配置文件在 conf 目錄下,這個目錄下有 zoo_sample.cfg 和 log4j.properties,你須要作的就是將 zoo_sample.cfg 更名爲 zoo.cfg,由於 Zookeeper 在啓動時會找這個文件做爲默認配置文件。下面詳細介紹一下,這個配置文件中各個配置項的意義。 tickTime=2000 dataDir=/tmp/zookeeper clientPort=2181 tickTime:這個時間是做爲 Zookeeper 服務器之間或客戶端與服務器之間維持心跳的時間間隔,也就是每一個 tickTime 時間就會發送一個心跳。 dataDir:顧名思義就是 Zookeeper 保存數據的目錄,默認狀況下,Zookeeper 將寫數據的日誌文件也保存在這個目錄裏。 clientPort:這個端口就是客戶端鏈接 Zookeeper 服務器的端口,Zookeeper 會監聽這個端口,接受客戶端的訪問請求。 當這些配置項配置好後,你如今就能夠啓動 Zookeeper 了,啓動後要檢查 Zookeeper 是否已經在服務,能夠經過 netstat – ano 命令查看是否有你配置的 clientPort 端口號在監聽服務。 3.Zookeeper 的啓動腳本在 bin 目錄下, Linux 下的啓動腳本是 ./zkServer.sh start 3、安裝mysql-5.6.27 必要軟件包 yum -y install gcc gcc-c++ gcc-g77 autoconf automake zlib* fiex* libxml* ncurses-devel libmcrypt* libtool-ltdl-devel* make cmake 建立mysql 用戶及用戶組: groupadd mysql useradd -r -g mysql mysql 解包 [root@host2 mysql_rpm]# tar -xvf MySQL-5.6.27-1.linux_glibc2.5.x86_64.rpm-bundle.tar MySQL-client-5.6.27-1.linux_glibc2.5.x86_64.rpm #MySQL客戶端程序 MySQL-devel-5.6.27-1.linux_glibc2.5.x86_64.rpm #MySQL客戶端程序 MySQL-embedded-5.6.27-1.linux_glibc2.5.x86_64.rpm #MySQL的嵌入式程序 MySQL-server-5.6.27-1.linux_glibc2.5.x86_64.rpm #MySQL服務端程序 MySQL-shared-5.6.27-1.linux_glibc2.5.x86_64.rpm #MySQL的共享庫 MySQL-shared-compat-5.6.27-1.linux_glibc2.5.x86_64.rpm #RHEL兼容包 MySQL-test-5.6.27-1.linux_glibc2.5.x86_64.rpm #MySQL的測試組件 [root@host2 mysql_rpm]# [root@host2 mysql_rpm]# rpm -ivh MySQL-server-5.6.27-1.linux_glibc2.5.x86_64.rpm Preparing... ########################################### [100%] 1:MySQL-server ########################################### [100%] warning: user mysql does not exist - using root warning: group mysql does not exist - using root [root@host2 mysql_rpm]# 8 已經有了mysql用戶和組 [root@host2 mysql_rpm]# id mysql uid=495(mysql) gid=492(mysql) groups=492(mysql) [root@host2 mysql_rpm]# nl /etc/group | grep mysql 60 mysql:x:492: [root@host2 mysql_rpm]# cat /etc/group | grep mysql mysql:x:492: [root@host2 mysql_rpm]# cat /etc/shadow | grep mysql mysql:!!:16455:::::: [root@host2 mysql_rpm]# 10 copy配置文件 # 沒有這一步也能夠按內置參數 [root@host2 mysql_rpm]# cp /usr/share/mysql/my-default.cnf /etc/my.cnf [root@host2 mysql_rpm]# 11 start [root@host2 mysql_rpm]# service mysql status MySQL is not running [FAILED] [root@host2 mysql_rpm]# service mysql start Starting MySQL.. [ OK ] 11 查驗 [root@host2 mysql_rpm]# netstat -anpl | grep mysql tcp 0 0 :::3306 :::* LISTEN 5924/mysqld unix 2 [ ACC ] STREAM LISTENING 76015 5924/mysqld /var/lib/mysql/mysql.sock [root@host2 mysql_rpm]# 12 安裝客戶端 [root@host2 mysql_rpm]# rpm -ivh MySQL-client-5.6.22-1.linux_glibc2.5.x86_64.rpm Preparing... ########################################### [100%] 1:MySQL-client ########################################### [100%] [root@host2 mysql_rpm]# 13 連到mysql並修改 [root@host2 mysql_rpm]# nl /root/.mysql_secret 1 # The random password set for the root user at Tue Jan 20 13:10:43 2015 (local time): F76Wy1A4G9ZuLcaG [root@host2 mysql_rpm]# mysql -p mysql Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 4 Server version: 5.6.22 Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> show databases; ERROR 1820 (HY000): You must SET PASSWORD before executing this statement mysql> mysql> SET PASSWORD = PASSWORD('123456'); Query OK, 0 rows affected (0.31 sec) mysql> flush privileges; mysql> \q Bye [root@host2 mysql_rpm]# 3、安裝mongodb3.0.4 執行的是紅色部分 1.創建數據文件夾 通常狀況下不會把數據目錄創建在mongodb的解壓目錄下,不過這裏方便起見,就建在mongodb解壓目錄下吧。 [plain]view plaincopy mkdir -p /mongodb/data/master mkdir -p /mongodb/data/slaver mkdir -p /mongodb/data/arbiter #三個目錄分別對應主,備,仲裁節點 2.創建配置文件 因爲配置比較多,因此咱們將配置寫到文件裏。 [plain]view plaincopy #master.conf dbpath=/mongodb/data/master logpath=/mongodb/log/master.log pidfilepath=/mongodb/master.pid directoryperdb=true logappend=true replSet=testrs bind_ip=192.168.1.229 port=27017 oplogSize=10000 fork=true noprealloc=true #auth=true [plain]view plaincopy #slaver.conf dbpath=/mongodb/data/slaver logpath=/mongodb/log/slaver.log pidfilepath=/mongodb/slaver.pid directoryperdb=true logappend=true replSet=testrs bind_ip=192.168.1.229 port=27017 oplogSize=10000 fork=true noprealloc=true #auth=true [plain]view plaincopy #arbiter.conf dbpath=/mongodb/data/arbiter logpath=/mongodb/log/arbiter.log pidfilepath=/mongodb/arbiter.pid #directoryperdb=true #logappend=true replSet=testrs bind_ip=192.168.1.229 port=27017 #oplogSize=10000 fork=true #noprealloc=true #auth=true 參數解釋: dbpath:數據存放目錄 logpath:日誌存放路徑 pidfilepath:進程文件,方便中止mongodb directoryperdb:爲每個數據庫按照數據庫名創建文件夾存放 logappend:以追加的方式記錄日誌 replSet:replica set的名字 bind_ip:mongodb所綁定的ip地址 port:mongodb進程所使用的端口號,默認爲27017 oplogSize:mongodb操做日誌文件的最大大小。單位爲Mb,默認爲硬盤剩餘空間的5% fork:之後臺方式運行進程 noprealloc:不預先分配存儲 以上配置本地未執行成功,我是使用如下命令行方式執行 ./mongod --dbpath=/data/mongodb/db --logpath=/data/mongodb/logs/master.log --logappend --pidfilepath=/data/mongodb/master.pid --directoryperdb --replSet=testrs oplogSize=10000 --port=27017 --fork 使用 --directoryperdb oplogSize=10000 會報錯 採用如下啓動mongodb ./mongod --dbpath=/data/mongodb/db/master --logpath=/data/mongodb/logs/master.log --logappend --pidfilepath=/data/mongodb/master.pid --replSet=testrs --port=27017 --fork ./mongod --dbpath=/data/mongodb/db/slaver --logpath=/data/mongodb/logs/slaver.log --logappend --pidfilepath=/data/mongodb/slaver.pid --replSet=testrs --port=27018 --fork ./mongod --dbpath=/data/mongodb/db/arbiter --logpath=/data/mongodb/logs/arbiter.log --logappend --pidfilepath=/data/mongodb/arbiter.pid --replSet=testrs --port=27019 --fork 或者經過如下命令執行 ./mongod -f ../conf/master/master.conf ./mongod -f ../conf/slaver/slaver.conf ./mongod -f ../conf/arbiter/arbiter.conf 終止服務器進程 >./mongo -p 27017 >use admin; >db.shutdownServer(); 終止數據庫服務器進程 也能夠:ps -ef |grep mongod 經過kill -9 pid 關閉 可是有可能形成數據的損壞kill -15 pid 3.啓動mongodb 進入每一個mongodb節點的bin目錄下 [java]view plaincopy ./monood -f master.conf ./mongod -f slaver.conf ./mongod -f arbiter.conf 注意配置文件的路徑必定要保證正確,能夠是相對路徑也能夠是絕對路徑。 4.配置主,備,仲裁節點 能夠經過客戶端鏈接mongodb,也能夠直接在三個節點中選擇一個鏈接mongodb。 [plain]view plaincopy ./mongo 10.10.148.130:27017 #ip和port是某個節點的地址 >use admin >cfg={ _id:"testrs", members:[ {_id:0,host:'192.168.1.229:27017',priority:2}, {_id:1,host:'192.168.1.229:27017',priority:1},{_id:2,host:'192.168.1.229:27017',arbiterOnly:true}] }; >cfg={ _id:"testrs", members:[ {_id:0,host:'127.0.0.1:27017',priority:2}, {_id:1,host:'127.0.0.1:27018',priority:1},{_id:2,host:'127.0.0.1:27019',arbiterOnly:true}] }; >rs.initiate(cfg) #使配置生效 cfg是能夠任意的名字,固然最好不要是mongodb的關鍵字,conf,config均可以。最外層的_id表示replica set的名字,members裏包含的是全部節點的地址以及優先級。優先級最高的即成爲主節點,即這裏的10.10.148.130:27017。特別注 意的是,對於仲裁節點,須要有個特別的配置——arbiterOnly:true。這個千萬不能少了,否則主備模式就不能生效。 實際部署中還有一點須要注意,IP地址用公網可訪問的ip,否則客戶端調用會有問題 cfg={ _id:"testrs", members:[ {_id:0,host:'192.168.1.229:27017',priority:2}, {_id:1,host:'192.168.1.229:27018',priority:1},{_id:2,host:'192.168.1.229:27019',arbiterOnly:true}] }; 配置的生效時間根據不一樣的機器配置會有長有短,配置不錯的話基本上十幾秒內就能生效,有的配置須要一兩分鐘。若是生效了,執行rs.status()命令會看到以下信息: [plain]view plaincopy { "set" : "testrs", "date" : ISODate("2013-01-05T02:44:43Z"), "myState" : 1, "members" : [ { "_id" : 0, "name" : "10.10.148.130:27017", "health" : 1, "state" : 1, "stateStr" : "PRIMARY", "uptime" : 200, "optime" : Timestamp(1357285565000, 1), "optimeDate" : ISODate("2013-01-04T07:46:05Z"), "self" : true }, { "_id" : 1, "name" : "10.10.148.131:27017", "health" : 1, "state" : 2, "stateStr" : "SECONDARY", "uptime" : 200, "optime" : Timestamp(1357285565000, 1), "optimeDate" : ISODate("2013-01-04T07:46:05Z"), "lastHeartbeat" : ISODate("2013-01-05T02:44:42Z"), "pingMs" : 0 }, { "_id" : 2, "name" : "10.10.148.132:27017", "health" : 1, "state" : 7, "stateStr" : "ARBITER", "uptime" : 200, "lastHeartbeat" : ISODate("2013-01-05T02:44:42Z"), "pingMs" : 0 } ], "ok" : 1 } 若是配置正在生效,其中會包含以下信息: [plain]view plaincopy "stateStr" : "RECOVERING" 同時能夠查看對應節點的日誌,發現正在等待別的節點生效或者正在分配數據文件。 如今基本上已經完成了集羣的全部搭建工做。至於測試工做,能夠留給你們本身試試。一個是往主節點插入數據,能從備節點查到以前插入的數據(查詢備節點可能 會遇到某個問題,能夠本身去網上查查看)。二是停掉主節點,備節點能變成主節點提供服務。三是恢復主節點,備節點也能恢復其備的角色,而不是繼續充當主的 角色。二和三均可以經過rs.status()命令實時查看集羣的變化。 4、redis集羣部署 cd redis---/src make 一、若是報錯報了「/bin/sh: cc: command not found」的錯誤 沒用gcc 安裝過程 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 注意gcc依賴了不少東西,有些包可能系統已經 裝了,有些沒有,防止出意外,最好都走一遍 2.再次執行make 報錯 make[1]: Entering directory `/software/redis-2.8.8/src' CC adlist.o In file included from adlist.c:34: zmalloc.h:50:31: error: jemalloc/jemalloc.h: No such file or directory zmalloc.h:55:2: error: #error "Newer version of jemalloc required" make[1]: *** [adlist.o] Error 1 make[1]: Leaving directory `/software/redis-2.8.8/src' make: *** [all] Error 2 執行 make MALLOC=libc 執行 make test 報錯 [root@ip-172 src]# make test You need tcl 8.5 or newer in order to run the Redis test make: *** [test] Error 1 少包、須要安裝tcl 執行如下命令 wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz sudo tar xzvf tcl8.6.1-src.tar.gz -C /usr/local/ cd /usr/local/tcl8.6.1/unix/ sudo ./configure sudo make sudo make install 再次執行make test 成功後執行[root@ip-172-31-6-155 src]# make install Hint: It's a good idea to run 'make test' ;) INSTALL install INSTALL install INSTALL install INSTALL install INSTALL install redis 集羣搭建 採用官方Sentinel組件你們集羣 測試環境部署在一臺機器,因此這裏就經過端口區分 1.新建server文件夾 >mkdir server 2.cp redis.conf server/redis_m.conf 主服務器配置文件 3.cp redis.conf server/redis_s1.conf 從服務器配置文件 redis_m.conf修改配置文件內容 修改如下對應的值 daemonize yes pidfile "/data/redis-3.0.4/redis-server-m.pid" port 6379 logfile "/data/redis-3.0.4/redis-server-m.log" dbfilename "dump.rdb" dir ./ appendonly yes aof-load-truncated yes redis_s1.conf修改配置文件內容 修改如下對應的值 daemonize yes pidfile "/data/redis-3.0.4/redis-server-s1.pid" port 6380 logfile "/var/log/redis/redis-server-s1.log" databases 16 dbfilename "dump.rdb" dir "/data/redis-3.0.4/server" # slaveof <masterip> <masterport> slaveof 54.223.43.17 6379 slave-serve-stale-data yes slave-read-only yes appendonly yes appendfilename "appendonly.aof" no-appendfsync-on-rewrite no aof-load-truncated yes aof-rewrite-incremental-fsync yes 啓動主從實例 [root@ip-172-31-6-155 redis-3.0.4]# redis-server server/redis_m.conf & [root@ip-172-31-6-155 redis-3.0.4]# redis-server server/redis_s1.conf & [root@ip-172-31-6-155 redis-3.0.4]# redis-server server/redis_s2.conf & 以此類推 修改配置sentinel.conf port 26379 dir /tmp sentinel monitor mymaster 127.0.0.1 6379 1 //注意這個1 是權重值 sentinel down-after-milliseconds mymaster 30000 sentinel parallel-syncs mymaster 1 sentinel failover-timeout mymaster 180000 啓動Sentinel [root@ip-172-31-6-155 redis-3.0.4]# redis-server sentinel.conf --sentinel &