一个简单的集群环境搭建

编程

1、两台服务器,ip分别是192.168.1.250和192.168.1.251,都安装的是centos7操作系统;

2、要求:应用程序做集群,数据库做双主热备,附件存储在文档服务器;看起来大概像这样的结构:

3、说明:刚开始开发的时候,没有这些要求,只要一个单机版的应用程序。因为没有准备附件上传到ftp的代码,为了不改动代码,才选择了磁盘挂载的方案。

二、搭建" title="环境搭建">环境搭建

1、拿到手里的是两台裸机,用之前刻录好的CentOS7.6的系统盘做了系统。因为是core版本的iso镜像,很多工具没有,给后边的环境搭建带来不少麻烦(在服务器不能联网的情况下);

2、开始的时候,服务器不能上外网,用路由器组建一个局域网,把本地的安装包通过FileZilla上传到服务器。jdk版本是1.8(下载地址: https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html ),mysql版本是5.6(下载地址: https://dev.mysql.com/downloads/mysql/5.6.html ),nginx版本是1.18(下载地址: http://nginx.org/en/download.html )。

3、安装JDK。进入 jdk安装包所在路径,通过命令:

    tar -zxvf XXX.gz

把压缩包解压,然后通过命令:

    vi /etc/profile

把jdk的安装路径添加到PATH环境变量。保存退出后,执行命令:

    source /etc/profile 

使环境变量生效,命令运行java -version能看到jdk版本信息,则jdk安装就完成了。

4、安装mysql。安装mysql之前,先要把系统自带的数据库卸载,由于我安装的centos是core版,没有自带的mariadb,则略过卸载的步骤。

提前说一下,在连通网络的情况先执行(根据提示,少什么模块就安装什么模块)

yum -y install gcc zlib openssl pcre pcre-devel openssl-devel autoconf

如果上来就执行mysql_install_db命令,会跳出一大堆的错误信息,基本都是缺少依赖的工具包。比如出现如下错误:

FATAL ERROR: please install the following Perl modules before executing /usr/local/mysql/scripts/mysql_install_db:

Data::Dumper

其实缺少的是autoconf模块。具体安装mysql的过程,就不细说了,网上教程非常详细。

5、安装nginx。这里提两点:一是在执行./configure命令的时候,一定要把--with-stream加上,后边要用到;二是centos7.6安装nginx后,没有自动做成系统服务,如果想通过service nginx start这样的命令来启动nginx,需要手动写一些配置文件,具体过程自行查找。

6、应用系统负载配置,nginx在251服务器上。

所有的负载都通过nginx来实现,同时文档服务器也是用nginx做代理。springboot开发的项目,server的端口是8080,将项目jar包分别上传到两台服务器。像这样:

192.168.1.250:8080,192.168.1.251:8080

直接上nginx的负载配置:

#user  nobody;

worker_processes 1;

#pid logs/nginx.pid;

events {

worker_connections 1024;

}

http {

autoindex off;

sendfile on;

keepalive_timeout 65;

upstream lvsTest{

ip_hash;

server 192.168.1.250:8080;

server 192.168.1.251:8080;

}

server {

listen 8088;

server_name 192.168.1.251;

location / {

proxy_pass http://lvsTest;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

}

error_page 500 502 503 504 /50x.html;

location = /50x.html {

root /usr/share/nginx/html;

}

location /fserver {

alias /usr/upload;

}

}

}

负载策略是ip_hash,防止出现session相关问题;上边一个location是用作应用程序负载,下边一个location是用作文档服务器,注意是alias。

7、数据库负载,nginx在250服务器上。配置文件:

#user  nobody;

worker_processes 1;

#pid logs/nginx.pid;

events {

worker_connections 1024;

}

stream{

upstream cloudsocket {

hash $remote_addr consistent;

# $binary_remote_addr;

server 192.168.1.250:3306 weight=5 max_fails=3 fail_timeout=300s;

server 192.168.1.251:3306 weight=5 max_fails=3 fail_timeout=300s;

}

server {

listen 13306;

proxy_connect_timeout 10s;

proxy_timeout 3000s;

proxy_pass cloudsocket;

}

}

代理msyql数据库,用的是stream模块,不是http了。前期如果没有安装stream模块的话,这会在stream这一行报错。

8、磁盘挂载。

程序原本是把附件存储在应用程序所在服务器本地,然后通过nginx代理来查看附件。现在做了集群后,就会出现部分文件找不到的情况。在不修改代码的前提下,决定通过nfs服务和mount操作来实现磁盘挂载。这样的话,在250服务器上运行的程序,执行附件上传后,代码里是把文件保存在本地,但是通过挂载,会把这个文件拷贝到251服务器上挂载的目录下。251服务器是被挂载服务器,250服务器是挂载服务器,那么就需要在251服务器上配置/etc/exports文件,例如:

/usr/upload 192.168.1.250(insecure,rw,sync,no_root_squash)

如果挂载过程中出现access denied错误,则需要把insecure权限加上,否则可以不加。

挂载服务器和被挂载服务器都要安装rpcbind模块和nfs模块并都需要启动。

到这里,就实现了开头部分那个结构图的要求了。

以上就是全部内容。

以上是 一个简单的集群环境搭建 的全部内容, 来源链接: utcz.com/z/518985.html

回到顶部