搗鼓了一天,「集羣環境」有了
大家好,我是悟空。
週末宅在家裏,搗鼓了一天,在本地用虛擬機搭建了 4 個 Linux 的集羣環境,機器之間實現了相互訪問。從此以後我的本地就有一套集羣環境
了,真正意義上可以模擬分佈式
的環境了!後面還可以模擬大型電商項目的高併發
場景,美滋滋!
比如我想搭建 Redis 集羣、Kafaka 集羣、Storm 集羣,這套環境統統可以搞定。
本篇非常詳盡地記錄了我是如何搭建這套集羣基礎環境的,爲了防止遇到其他坑,每步我都有截圖,就是爲了方便大家跟着搭一套。
通過本篇,你可以學到:
-
如何搭建和組成 Linux 集羣環境。
-
如何使多臺機器在同一個網段。
-
如何使機器之間免密登錄。
-
Linux 環境配置 Java 開發環境(可自行安裝 JDK 8)。
-
Linux 環境配置 Perl 5.6 開發環境。
-
支持 SecureCRT 遠程登錄多套機器。
-
支持 WinSCP 遠程拷貝文件。
注意:Redis、Kafka 集羣,不會放到這一講中,本講主要是講解集羣的基礎環境搭建,對於搭建中間件的集羣環境會放到後面幾講中。
接下來介紹怎麼一步步配置集羣環境的,建議先收藏。安裝所需的軟件,到公衆號 悟空聊架構 後臺回覆 集羣軟件 下載。
配置虛擬機
創建虛擬機
軟件:VirtualBox
添加操作系統鏡像文件。鏡像文件在公衆號悟空聊架構
後臺回覆集羣軟件
配置網絡
選擇橋接模式
啓動虛擬機
點擊啓動按鈕
選擇 Skip
Next
Next
Next
Yes, discard any data
配置域名 eshop-cache01
時區選擇亞洲 - 上海,如果配置錯了,可以通過以下命令修改:
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
密碼:huang123
選擇 Reboot:
配置網絡
現在不能連外網,如下圖所示:
按照如下配置,獲取動態 IP
vi /etc/sysconfig/network-scripts/ifcfg-eth0
# 只保留以下幾項,可以按鍵盤上的 DD 刪除多餘的 3 行。
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=dhcp
service network restart
ifconfig
動態 IP 地址爲 192.168.10.86
vi /etc/sysconfig/network-scripts/ifcfg-eth0
BOOTPROTO=static
需要改爲靜態 IP 地址
修改配置文件
BOOTPROTO=static
IPADDR=192.168.10.86
NETMASK=255.255.255.0
GATEWAY=192.168.10.1
改完後,保存,執行以下命令,重啓網絡
service network start
測試下是否能 ping 通 www.baidu.com
配置 hosts
配置本機的 hostname 到 ip 地址的映射。
vi /etc/hosts
192.168.10.86 eshop-cache01
安裝 SecureCRT
SecureCRT 用來連接虛擬機非常方便。
在百度網盤下載,按照使用說明安裝。
就可以連接虛擬機了。
關閉防火牆
爲了防止集羣之間通信問題,關掉防火牆。
service iptables stop
service ip6tables stop
chkconfig iptables off
chkconfig ip6tables off
vi /etc/selinux/config
SELINUX=disabled
安裝 yum 工具
# 配置阿里的倉庫源
sed -i "s|enabled=1|enabled=0|g" /etc/yum/pluginconf.d/fastestmirror.conf
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
curl -o /etc/yum.repos.d/CentOS-Base.repo https://www.xmpan.com/Centos-6-Vault-Aliyun.repo
yum clean all
yum makecache
安裝 wget 工具
yum install -y wget
安裝軟件
安裝 WinSCP
到網盤下載 WinSCP 並安裝。
連接虛擬機:
清理 local 目錄
cd /usr/local
ll
rm -rf *
ll
進入到 local 目錄:
安裝 Java JDK 7
把 JDK 7 rpm 包拖到 local 目錄
JDK 7 rpm 包到網盤下載。
安裝 JDK
rpm -ivh jdk-7u65-linux-i586.rpm
刪除 JDK 安裝包
rm -rf jdk-7u65-linux-i586.rpm
配置環境變量
修改 ~/.bashrc 文件
vi ~/.bashrc
export JAVA_HOME=/usr/java/latest
export PATH=$PATH:$JAVA_HOME/bin
使 .bashrc 文件生效:
source ~/.bashrc
測試下環境變量是否配置成功
java -version
安裝 Perl
Perl,是一個基礎的編程語言的安裝,tomcat 和 java web 應用會用到。大型電商網站的詳情頁系統非常複雜,用到的技術棧是 java + nginx + lua,需要 perl。
Perl 安裝包到網盤下載。
把 Perl 安裝包拖到 local 目錄
解壓縮 perl 安裝包
tar -zxvf perl-5.16.1.tar.gz
刪除 perl 安裝包
rm -rf perl-5.16.1.tar.gz
安裝 gcc
GCC 是 GNU 編譯器 套件。不然後續步驟會報錯。
yum install -y gcc
配置 perl
cd perl-5.16.1
./Configure -des -Dprefix=/usr/local/perl
編譯 Perl
make && make test && make install
集羣配置
另外幾臺機器可以通過複製第一臺的方式來搭建或者手動搭建,需要注意的是網絡 IP 和 hosts 文件需要改下。
修改 hosts
用 SecureCRT 連接每臺機器,修改每一臺機器的 hosts 信息:
192.168.10.86 eshop-cache01
192.168.10.115 eshop-cache02
192.168.10.57 eshop-cache03
192.168.10.56 eshop-cache04
集羣免密通信
每臺機器先設置祕鑰
每臺機器都配置 ssh 登錄,輸入以下命令後不斷回車即可。
ssh-keygen -t rsa
將公鑰複製爲 authorized_keys 文件,以後使用 ssh 連接本機就不需要輸入密碼了。
cd /root/.ssh
cp id_rsa.pub authorized_keys
打開 authorized_keys 文件,查看文件中是否有 eshop-cache01 的公鑰信息。
測試下使用 ssh 連接本機
ssh eshop-cache01
會提示輸入 yes/no 的命令,輸入 yes,提示 Last login,就表示成功。退出登錄使用 exit 命令。
下次再執行 ssh eshop-cache01,提示 Last login,也是表示連接成功。
每臺機器重複上面的步驟,保證自己的機器上 authorized_keys 有自己的公鑰信息。
每臺機器相互免密
接着將本機的公鑰拷貝到指定機器的 authorized_keys 文件中。
在第二臺、第三臺、第四臺虛擬機上執行:
ssh-copy-id -i eshop-cache01
然後看下第一臺機器上是否有其他機器的公鑰信息,可以看到第一臺機器上有四臺機器的公鑰信息。
複製第一臺機器的公鑰信息到其他機器。
scp authorized_keys eshop-cache02:/root/.ssh
scp authorized_keys eshop-cache03:/root/.ssh
scp authorized_keys eshop-cache04:/root/.ssh
測試下其他機器是否能相互連其他機器。比如第二臺機器連接第三臺機器:
ssh eshop-cache03
連接成功命令行會顯示 [root@eshop-cache03 ~] #。
OK,四臺機器現在都是可以相互訪問的了,集羣的基礎環境配置完成。
遇到的問題
四臺機器突然不能連外網,試過各種方式,最後將本機的上網方式從無線連接改爲有限連接,然後將虛擬機的橋接網卡
連接方式選擇爲有線的網卡後就好了。
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/1XE8d9PfYqVqP8uM1WLpjA