搗鼓了一天,「集羣環境」有了

大家好,我是悟空。

週末宅在家裏,搗鼓了一天,在本地用虛擬機搭建了 4 個 Linux 的集羣環境,機器之間實現了相互訪問。從此以後我的本地就有一套集羣環境了,真正意義上可以模擬分佈式的環境了!後面還可以模擬大型電商項目的高併發場景,美滋滋!

比如我想搭建 Redis 集羣、Kafaka 集羣、Storm 集羣,這套環境統統可以搞定。

本篇非常詳盡地記錄了我是如何搭建這套集羣基礎環境的,爲了防止遇到其他坑,每步我都有截圖,就是爲了方便大家跟着搭一套。

通過本篇,你可以學到

注意: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