捣鼓了一天,「集群环境」有了

2022-05-13 14:59:06 浏览数 (1)

大家好,我是悟空。

周末宅在家里,捣鼓了一天,在本地用虚拟机搭建了 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

时区选择亚洲-上海,如果配置错了,可以通过以下命令修改:

代码语言:javascript复制
cp  /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime

密码:huang123

选择 Reboot:

配置网络

现在不能连外网,如下图所示:

按照如下配置,获取动态 IP

代码语言:javascript复制
vi /etc/sysconfig/network-scripts/ifcfg-eth0
# 只保留以下几项,可以按键盘上的 DD 删除多余的 3 行。
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=dhcp
代码语言:javascript复制
service network restart
ifconfig

动态 IP 地址为 192.168.10.86

代码语言:javascript复制
vi /etc/sysconfig/network-scripts/ifcfg-eth0
BOOTPROTO=static

需要改为静态 IP 地址

修改配置文件

代码语言:javascript复制
BOOTPROTO=static
IPADDR=192.168.10.86
NETMASK=255.255.255.0
GATEWAY=192.168.10.1

改完后,保存,执行以下命令,重启网络

代码语言:javascript复制
service network start

测试下是否能 ping 通 www.baidu.com

配置 hosts

配置本机的 hostname 到 ip 地址的映射。

代码语言:javascript复制
vi /etc/hosts
192.168.10.86 eshop-cache01

安装 SecureCRT

SecureCRT 用来连接虚拟机非常方便。

在百度网盘下载,按照使用说明安装。

就可以连接虚拟机了。

关闭防火墙

为了防止集群之间通信问题,关掉防火墙。

代码语言:javascript复制
service iptables stop
service ip6tables stop
chkconfig iptables off
chkconfig ip6tables off

vi /etc/selinux/config
SELINUX=disabled

安装 yum 工具

代码语言:javascript复制
# 配置阿里的仓库源
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 
代码语言:javascript复制
yum clean all
yum makecache

安装 wget 工具

代码语言:javascript复制
yum install -y wget

安装软件

安装 WinSCP

到网盘下载 WinSCP 并安装。

连接虚拟机:

清理 local 目录

代码语言:javascript复制
cd /usr/local
ll
rm -rf  *
ll

进入到 local 目录:

安装 Java JDK 7

把 JDK 7 rpm 包拖到 local 目录

JDK 7 rpm 包到网盘下载。

安装 JDK
代码语言:javascript复制
rpm -ivh jdk-7u65-linux-i586.rpm
删除 JDK 安装包
代码语言:javascript复制
rm -rf jdk-7u65-linux-i586.rpm
配置环境变量

修改 ~/.bashrc文件

代码语言:javascript复制
vi ~/.bashrc
export JAVA_HOME=/usr/java/latest
export PATH=$PATH:$JAVA_HOME/bin

使 .bashrc 文件生效:

代码语言:javascript复制
source ~/.bashrc

测试下环境变量是否配置成功

代码语言:javascript复制
java -version

安装 Perl

Perl,是一个基础的编程语言的安装,tomcat 和 java web应用会用到。大型电商网站的详情页系统非常复杂,用到的技术栈是 java nginx lua,需要perl。

Perl 安装包到网盘下载。

把 Perl 安装包拖到 local 目录

解压缩 perl 安装包

代码语言:javascript复制
tar -zxvf perl-5.16.1.tar.gz

删除 perl 安装包

代码语言:javascript复制
rm -rf perl-5.16.1.tar.gz

安装 gcc

GCC 是 GNU编译器 套件。不然后续步骤会报错。

代码语言:javascript复制
yum install -y gcc

配置 perl

代码语言:javascript复制
cd perl-5.16.1
./Configure -des -Dprefix=/usr/local/perl

编译 Perl

代码语言:javascript复制
make && make test && make install

集群配置

另外几台机器可以通过复制第一台的方式来搭建或者手动搭建,需要注意的是网络 IP 和 hosts 文件需要改下。

修改 hosts

用 SecureCRT 连接每台机器,修改每一台机器的 hosts 信息:

代码语言:javascript复制
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 登录,输入以下命令后不断回车即可。

代码语言:javascript复制
ssh-keygen -t rsa

将公钥复制为authorized_keys文件,以后使用 ssh 连接本机就不需要输入密码了。

代码语言:javascript复制
cd /root/.ssh
cp id_rsa.pub authorized_keys

打开 authorized_keys 文件,查看文件中是否有 eshop-cache01 的公钥信息。

测试下使用 ssh 连接本机

代码语言:javascript复制
ssh eshop-cache01

会提示输入 yes/no 的命令,输入 yes,提示 Last login,就表示成功。退出登录使用 exit 命令。

下次再执行 ssh eshop-cache01,提示 Last login,也是表示连接成功。

每台机器重复上面的步骤,保证自己的机器上 authorized_keys 有自己的公钥信息。

每台机器相互免密

接着将本机的公钥拷贝到指定机器的 authorized_keys文件中。

在第二台、第三台、第四台虚拟机上执行:

代码语言:javascript复制
ssh-copy-id -i eshop-cache01

然后看下第一台机器上是否有其他机器的公钥信息,可以看到第一台机器上有四台机器的公钥信息。

复制第一台机器的公钥信息到其他机器。

代码语言:javascript复制
scp authorized_keys eshop-cache02:/root/.ssh
scp authorized_keys eshop-cache03:/root/.ssh
scp authorized_keys eshop-cache04:/root/.ssh

测试下其他机器是否能相互连其他机器。比如第二台机器连接第三台机器:

代码语言:javascript复制
ssh eshop-cache03

连接成功命令行会显示 [root@eshop-cache03 ~] #。

OK,四台机器现在都是可以相互访问的了,集群的基础环境配置完成。

遇到的问题

四台机器突然不能连外网,试过各种方式,最后将本机的上网方式从无线连接改为有限连接,然后将虚拟机的桥接网卡连接方式选择为有线的网卡后就好了。

参考和感谢:

http://www.passjava.cn

儒猿-亿级流量

- END -

0 人点赞