centos群集,docker集群搭建

企业为什么搭建群集环境和web网站

兄弟您好上海献峰Web服务器集群搭建如下

一需求分析:

1.整体需求:搭建一个高可用的网站服务器集群,能承受高并发请求,能抵御一般的网络攻击,任何一台服务器的退服不影响整个集群的运作,并且能对各服务器的运行情况作出实时监控。

2.详细需求分析:

根据需求,计划根据以下拓扑搭建运行环境:

二详细功能描述:

1.前端服务器采用nginx实现反向代理和负载均衡,用keepalive实现HA。此部分由centos1和centos4实现,centos1作为主服务器,centos4作为热备服务器。Nginx会根据不同的请求ip机会均等地把请求发送到后端两台服务器,并且以ip hash的方式保持各个ip的会话。

2.后端服务器构建在centos2与centos3上,采用apache作为web发布软件,mysql作为数据库,测试网页用Django来实现。两台服务器的数据库能够自动同步。

3.作为热备服务器,centos4在centos1没有故障时并没有业务流量,处于相对空闲的状态,因此在centos4上配置nfs使它成为文件共享服务器,网站文件放在这台服务器上。

4.centos5作为监控服务器,运行nagios监控各服务器状态。出现告警时通过告警通知管理员。另外centos5还作为saltstack的服务器,其他主机的软件安装、文件传输、命令运行等操作均通过saltstack批量实现。

三总体部署描述:

1.各个服务器均安装centos6.4 64位版本,采用cobbler实现批量自动安装。

2.各个软件均安装最新的稳定版,centos自带的软件也要进行升级,例如python,Centos自带的版本比较久,会影响Django的运行。

四详细部署描述:

1.nginx设置

Nginx在这里的作用主要是反向代理、作为用户以及服务器之间的缓存、以及以负载均衡的方式把请求发送到后端两台服务器。

采用编译安装的方式安装nginx,具体过程就不在此记述了,不过为了更好地抵挡入侵,建议编译前修改一下安装文件,使入侵者难以查出nginx的版本号,修改安装文件中的nginx.h,把相关字段修改如下:

NGINX_VERSION"1.0" NGINX_VER"webserver" NGINX_VERSION

Nginx的配置文件如下:

212800

default_type application/octet- zone=20;

send_timeout 20;

client_body_buffer_size 1k;

client_header_buffer_size 1k;

large_client_header_buffers 2 1k;

server_tokens off;

client_body_timeout 20;

client_header_timeout 20;

ip_hash;

server 10.0.0.3;

server 10.0.0.280///100;

limit_rate 500k; 500 502 503 504/=/

因为后端测试网页是用Django写的,因此nginx就不用处理php等动态网页的请求了。

设置完毕后,把nginx设置为开机启动,可以用如下方式:

echo“/usr/local/nginx/sbin/nginx”>>/etc/rc.local

2.Keeplive设置

Keeplive的作用是在两台服务器(centos1、centos4)之间,以VRRP协议实现HA。通过虚拟出一个Virtul IP(本例子中是192.168.00.000)来对外发布业务。两台服务器中的任一台退服了,keeplive会自动把业务转到另一台上。在这里centos1是主服务器,centos4是备用服务器。平时的数据流量只会通过centos1,只有centos1退服了,数据流量才会割接到centos4上。

centos1上的keepalive配置:

! Configuration File@test.com@127.0.0.130

virtual_router_id 51192.168.48.139

priority 100

advert_int 1 1111192.168.48.138

对于从服务器centos4,只需要把以上配置文件的部分内容修改即可:

192.168.48.14090

同样,配置好配置文件后,把keepalive添加到开机启动中。

对于keepalive,由于是使用VRRP协议来检查对端是否在线的,只要对端能ping通,那么keeplive就会认为对端在线。但也有一种情况是对端服务器没有宕机,但nginx出错关闭了,这种情况下keepalive仍然会判断对端在线,不会把业务割接到备用服务器。因此我们需要在服务器上运行一个脚本,监控nginx进程的状态。假如nginx进程关闭了,先尝试重启nginx,无法重启时就关闭keepalive的进程,使业务割接到备用端。

搭建MySQL三节点集群实现高可用性mysql三台机群集

搭建MySQL三节点集群:实现高可用性

MySQL是一种非常流行的关系型数据库管理系统,它通常用于Web应用程序的后端数据存储。在生产环境中,由于数据库的重要性,我们需要确保MySQL的高可用性,以避免出现单点故障导致的系统宕机。为了实现高可用性,我们可以搭建一个MySQL三节点集群,本文将介绍如何进行搭建。

1.配置环境

在搭建MySQL三节点集群之前,我们需要先配置环境。在本文中,我们将使用三个虚拟机分别作为三个MySQL节点。每个节点都需要运行相同的Linux发行版,并安装相同版本的MySQL。在本文中,我们将使用CentOS 7作为Linux发行版,MySQL 5.7作为数据库软件。

2.创建MySQL用户和组

在每个节点上,我们需要创建一个MySQL用户和一个MySQL组,使得我们可以以此用户的身份运行MySQL服务器进程。

# groupadd mysql

# useradd-r-g mysql-s/bin/false mysql

3.配置防火墙

为了保证节点之间可以通信,我们需要在每个节点上开启MySQL服务所需要的端口号。在本文中,我们将使用3306端口。

# firewall-cmd–zone=public–add-port=3306/tcp–permanent

# firewall-cmd–reload

4.安装MySQL

我们需要在每个节点上安装MySQL 5.7。

# yum install mysql-server

安装完成后,启动MySQL服务并设置开机自启。

# systemctl start mysqld.service

# systemctl enable mysqld.service

5.配置主节点

选择其中一个节点作为主节点,并进行以下配置。

5.1配置my.cnf文件

我们需要打开MySQL主配置文件my.cnf并进行以下配置。

# vim/etc/my.cnf

在[mysqld]段中添加以下内容:

server-id=1

log-bin=mysql-bin

binlog-ignore-db=mysql

binlog-do-db=db_name

max-connections=10000

innodb_flush_log_at_trx_commit=2

sync_binlog=1

innodb_buffer_pool_size=8G

innodb_log_file_size=2G

注意:将log_bin参数设置为mysql-bin,以便MySQL可以将数据写入二进制日志;将server_id参数设置为1,以便MySQL可以将与其他节点的数据进行区分;将binlog-do-db参数设置为您要在节点上运行的数据库名称;将max_connections参数设置为您希望在节点上打开的最大连接数。

5.2创建主节点的复制用户

我们需要创建一个复制用户以便从节点可以连接到主节点并复制数据。

mysql> CREATE USER‘replication’@’%’ IDENTIFIED BY‘password’;

mysql> GRANT REPLICATION SLAVE ON*.* TO‘replication’@’%’;

注意:将password设置为一个安全的密码,并确保在从节点上使用相同的用户名和密码进行复制。

5.3重启MySQL服务

我们需要重启MySQL服务以使更改生效。

# systemctl restart mysqld.service

6.配置从节点

在剩余节点上,我们需要进行以下配置。

6.1配置my.cnf文件

我们需要打开MySQL主配置文件my.cnf并进行以下配置。

# vim/etc/my.cnf

在[mysqld]段中添加以下内容:

server-id=2

relay-log=mysql-relay-bin

relay-log-index=mysql-relay-bin.index

注意:将server_id参数设置为此节点的唯一标识符。将relay-log参数设置为mysql-relay-bin,以便MySQL可以将数据写入中继日志。

6.2启动从节点并连接到主节点

我们需要启动MySQL服务并连接到主节点。

# systemctl start mysqld.service

mysql> CHANGE MASTER TO

MASTER_HOST=’master_ip’,

MASTER_USER=’replication’,

MASTER_PASSWORD=’password’,

MASTER_LOG_FILE=’mysql-bin.000001′,

MASTER_LOG_POS=4;

注意:将master_ip替换为主节点的IP地址;将password替换为复制用户的密码;将master_log_file和master_log_pos设置为主节点上的二进制日志文件和位置。

6.3开始复制

我们需要在从节点上开始复制数据。

mysql> START SLAVE;

7.测试集群

我们可以在主节点上创建新的数据库和数据表,并在从节点上验证数据是否被正确复制。如果一切正常,则集群已成功搭建。

总结

通过搭建MySQL三节点集群,我们可以在生产环境中实现数据库的高可用性,以避免出现单点故障导致的系统宕机。在搭建过程中,我们需要配置环境、创建MySQL用户和组、配置防火墙、安装MySQL、配置主节点和从节点,并在最后测试集群。

linux下apache+tomcat集群详细配置

环境:

操作系统均为:CentOS 5.1

Apache2.X服务器一台:IP地址192.168.232.4;安装路径/usr/local/apache;

Tomcat6服务器一台:IP地址192.168.232.5;安装路径/usr/local/tomcat;

Tomcat6服务器一台:IP地址192.168.232.6;安装路径/usr/local/tomcat;

配置:

Apache安装:

#./configure--prefix=/usr/local/apache--enable-modules=so--enable-mods-shared=all--enable-proxy--enable-proxy-connect--enable-proxy-ftp--enable-proxy-http--enable-proxy-ajp--enable-proxy-balancer--enable-rewrite

注释:激活tomcat集群需要的 enable-proxy,enable-proxy-http,enable-proxy-connect,enable-proxy-ajp和enable-proxy-balancer,其中proxy-ajp和proxy-balancer必须依赖proxy,如果是自定义的编译除了以上几个必须的模块外,mod_status也要编译进去,切记。enable-proxy-ftp可以不编译。

#make;make install

制作Apache启动项:

#cp support/apachectl/etc/rc.d/init.d/httpd

#vi/etc/rc.d/init.d/httpd

添加以下内容:(包括#号)

# Startup script for the Apache Web Server

# chkconfig: 2345 85 15

# description: Apache is a World Wide Web server.It is used to server

# HTML files and CGI.

# processname: httpd

# pidfile:/usr/local/apache/log/httpd.pid

# config:/usr/local/apache/conf/httpd.conf

增加服务项

#chkconfig--add httpd

#chmod 755/etc/rc.d/init.d/httpd

#chkconfig--level 345 httpd on

JDK安装:

#chmod a+x jdk-6u4-linux-i586-rpm.bin

#./jdk-6u4-linux-i586-rpm.bin

JAVA环境变量设置:

#vi/etc/profile

在文件最后添加以下内容:

JAVA_HOME=/usr/java/jdk1.6.0_04

CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar

PATH=$JAVA_HOME/bin:$PATH

CATALINA_HOME=/usr/local/tomcat

export JAVA_HOME CLASSPATH PATH CATALINA_HOME

执行如下命令使环境变量生效:

source/etc/profile

测试配置是否成功:

java–version

Tomcat安装:

#wget [url][/url]

#tar zxvf apache-tomcat-6.0.16.tar.gz

#mv apache-tomcat-6.0.16/usr/local/tomcat

Tomcat随机启动:

#vi/etc/rc.local

添加以下内容:

/usr/local/tomcat/bin/startup.sh

tomcat6配置文件server.xml:

<!-- You should set jvmRoute to support load-balancing via AJP ie:

<Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm1">

-->

<Engine name="Catalina" defaultHost="localhost">

改成

<!-- You should set jvmRoute to support load-balancing via AJP ie:

-->

<Engine name="Standalone" defaultHost="localhost" jvmRoute="tomcatX">

<!--

<Engine name="Catalina" defaultHost="localhost">

-->

说明:

第一台tomcat就把jvmRoute="tomcat1"

第二台tomcat就把jvmRoute="tomcat2"

<!--

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>

-->

去掉注释变为

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>

***群集详细配置***

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"

channelSendOptions="8">

<Manager className="org.apache.catalina.ha.session.DeltaManager"

expireSessionsOnShutdown="false"

notifyListenersOnReplication="true"/>

<Channel className="org.apache.catalina.tribes.group.GroupChannel">

<Membership className="org.apache.catalina.tribes.membership.McastService"

address="228.0.0.4"

port="45564"

frequency="500"

dropTime="3000"/>

<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"

address="auto"

port="4000"

autoBind="100"

selectorTimeout="5000"

maxThreads="6"/>

<Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">

<Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>

</Sender>

<Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>

<Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>

</Channel>

<Valve className="org.apache.catalina.ha.tcp.ReplicationValve"

filter=""/>

<Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>

<Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"

tempDir="/tmp/war-temp/"

deployDir="/tmp/war-deploy/"

watchDir="/tmp/war-listen/"

watchEnabled="false"/>

<ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>

<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>

</Cluster>

配置应用的web.xml:

在每个webapps应用中,修改配置文件web.xml文件添加元素<distributable/>

在web.xml文件中<web-app>元素下增加以下内容:

<!--此应用将与群集服务器复制Session-->

<distributable/>

具体修改如下:

修改前:

<?xml version="1.0" encoding="ISO-8859-1"?>

<web-app xmlns="[url][/url]"

xmlns:xsi=""

xsi:schemaLocation=" [url][/url]"

version="2.5">

</web-app>

修改后:

<?xml version="1.0" encoding="ISO-8859-1"?>

<web-app xmlns="[url][/url]"

xmlns:xsi=""

xsi:schemaLocation=" [url][/url]"

version="2.5">

<!--此应用将与群集服务器复制Session-->

<distributable/>

</web-app>

配置apache的ajp负载均衡功能:

确保将以下Module的注释去掉

LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_connect_module modules/mod_proxy_connect.so

LoadModule proxy_ftp_module modules/mod_proxy_ftp.so

LoadModule proxy_http_module modules/mod_proxy_http.so

LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

LoadModule proxy_balancer_module modules/mod_proxy_balancer.so

LoadModule status_module modules/mod_status.so

增加以下内容:

# Proxypass Config

Include conf/extra/httpd-modproxy.conf

建立文件httpd-modproxy.conf输入内容:

<Location/server-status>

SetHandler server-status

Order Deny,Allow

Deny from all

Allow from all

</Location>

<Location/balancer-manager>

SetHandler balancer-manager

Order Deny,Allow

Deny from all

Allow from all

</Location>

ProxyRequests Off

ProxyPass/ balancer://tomcatcluster stickysession=jsessionid nofailover=On

<Proxy balancer://tomcatcluster>

BalancerMember [url][/url] loadfactor=1

BalancerMember [url][/url] loadfactor=2

</Proxy>

注释:

ProxyRequests Off表示启用反向代理,必须开启;

ProxyPass为代理转发的Url,即将所有访问/的请求转发到群集balancer://tomcatcluster,这里为/即将所有访问/的请求转发到群集balancer://tomcatcluster的/test目录;

BalancerMember为群集的成员,即群集服务器1或2,负载均衡服务器会根据均衡规则来将请求转发给BalancerMember;

调试负载均衡集群系统:

访问apache服务器的web服务:[url][/url]

如果显示负载均衡有关信息则说明成功了,接着可以访问[url][/url]即访问到了tomcat的应用

***必须先启动Tomcat服务再启动Apache服务!***

参考文档:

[url][/url]

[url][/url]

[url][/url]

[url][/url]

阅读剩余
THE END