热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在centos6系统上基于session绑定实现nat模型的lvs集群,并在RS上安装Discuz论坛

实验环境:四台虚拟机,安装的操作系统是CentOS6.5,各自的功能及IP地址如下:Director:eth0192.168.2.1(作为VIP使用),eth1:10.0.0.1(

实验环境:四台虚拟机,安装的操作系统是CentOS6.5,各自的功能及IP地址如下:

Director: 

    eth0 192.168.2.1(作为VIP使用),eth1:10.0.0.1(作为DIP使用)

RS1:

    eth0:10.0.0.2

RS2:

    eth0:10.0.0.3

数据库服务器:安装的mariadb

    eth0:10.0.0.4

拓扑图:

    ,实验步骤:

    一准备数据库服务器,安装mariadb,创建一个用于远程连接数据库的用户,创建一个数据库,用于两台RS服务器连接时使用,授权给该用户对应的数据库所有权限。

MariaDB [(none)]> CREATE USER cluster@‘10.%.%.%‘ IDENTIFIED BY ‘cluster‘;
MariaDB [(none)]> CREATE DATABASE cluster;
MariaDB [(none)]> GRANT ALL ON cluster.* TO ‘cluster‘@‘10.%.%.%‘;
MariaDB [(none)]> FLUSH PRIVILEGES;

    二、准备两台RS服务器,这两台RS服务器都要提供httpd服务。将Discuz论坛安装程序解压后的目录文件upload复制到/var/www/html/bbs目录下,复制到其中一台就可以,以RS1为例。使用系统自带的httpd

[root@node1 ~]# yum install -y php
[root@node1 ~]# yum install -y php-mysql
[root@node1 ~]# service httpd start
[root@node1 Discuz]# unzip Discuz_X2.5_SC_GBK.zip  #将解压出来的upload目录复制到/var/www/html目录下
[root@node1 Discuz]# cp upload/ /var/www/html/bbs
[root@node1 Discuz]# cp upload/ /var/www/html/bbs^C
[root@node1 Discuz]# cd /var/www/html/bbs
[root@node1 bbs]# chmod -R 777 config/ data/ uc_client/ uc_server/

在RS1和RS2上都安装xinetd并将rsync启动为服务,以便将/var/www/html目录的内容做到同时同步的效果,以达到两台服务器上内容一致。编辑/etc/rsyncd.conf文件,内容为:

# Global Settings
uid = nobody
gid = nobody
use chroot = no
max connections = 10
strict modes = yes
pid file = /var/run/rsyncd.pid
log file = /var/log/rsyncd.log
# Directory to be synced
[backup]
path = /var/www/html
ignore errors = yes
read only = no
write only = no
hosts allow = 10.0.0.0/8
hosts deny = *
list = true
uid = root
gid = root
auth users = backup_transfer
secrets file = /etc/rsyncd.passwd
[root@node2 ~]# echo "backup_transfer:redhat" > /etc/rsyncd.passwd  #这个文件用于认证另外一个节点推送数据时的用户身份。
backup_transfer:redhat
[root@node2 ~]# echo "redhat" > /etc/rsyncd.passwd2 #这个文件用于向对方节点推送时在脚本中指定密码文件,免去交互的过程。
[root@node2 ~]# chmod 600 /etc/rsyncd.passwd
[root@node2 ~]# chmod 600 /etc/rsyncd.passwd2
[root@node2 ~]# chkconfig rsync on
[root@node2 ~]# service xinetd start

提供脚本文件,以便在两台服务器中站点数据目录内的文件发生变化时,可以自动推送文件。脚本的内容为:

#!/bin/bash
#
/usr/local/bin/inotifywait -mrq --timefmt ‘%d/%m/%y %H:%M‘ --format ‘%T %w %w%f %e‘ -e modify,delete,create,attrib /var/www/html | while read file;
do
/usr/bin/rsync -vzrtopg --delete --progress /var/www/html/ backup_transfer@10.0.0.3::backup --password-file=/etc/rsyncd.passwd2
echo "${files} was rsynced" >> /var/log/rsync.log 2>&1
done

脚本中定义的传送IP为对方服务器的IP地址,只需要修改这一点就可以,其他的配置可以完全一样,就不再重复。

另外可以在站点根目录下各添加index.html文件,简单的在文件中写入对应的主机名称,之后方便在测试的时候查看director在调度的时候调度请求到不同的主机的效果。

由于是在虚拟机中模拟实验,所以两台RS与Director之间的通信需要RS指向Director的DIP作为网关。

[root@node1 ~]# route add default gw 10.0.0.1 #两台RS上都要设置。

三、设置Director

Director上配置了两块网卡一个作为连接外网的网卡使用,即VIP:192.168.2.1,另外一块网卡作为内网的网关使用,IP地址为10.0.0.1,另外要打开IP地址转发功能,这样在模拟的实验环境中RS1和RS2才可以和192.168.2.1正常通信:

[root@director ~]# echo 1 > /proc/sys/net/ipv4/ip_forward
[root@director ~]# ipvsadm -A -t 192.168.2.1:80 -s rr   #定义集群服务
[root@director ~]# ipvsadm -a -t 192.168.2.1:80 -r 10.0.0.2 -m   #添加RS1
[root@director ~]# ipvsadm -a -t 192.168.2.1:80 -r 10.0.0.3 -m   #添加RS2

先在浏览器内测试默认主页的效果:

,

,

四、安装discuz,测试完毕后,先在集群服务中删除node2,在node1上安装Discuz论坛,删除的目的是为了安装过程中可以准确定位到node1上。在浏览器内输入192.168.2.1/bbs安装论坛,安装完毕后,再将node1在集群服务中添加进来。

#[root@director ~]# ipvsadm -d -t 192.168.2.1:80 -r 10.0.0.3

,

,

,

,

,

在node1上安装完discuz以后,启动rsync的脚本文件,然后向node2上同步数据文件,同样,node2上也启动脚本文件,以便以后有数据更新时向node1同步。

[root@node1 ~]# ./rsync.sh &

将node2添加进集群服务中,这样director可以调度用户请求到不同的RS上。

[root@director ~]# ipvsadm -a  -t 192.168.2.1:80 -r 10.0.0.3

因为会话信息是保存在服务器端的,而两台RS之间开启了双方Rsync同步,所以会话数据信息也会同步成一致的。

在centos6系统上基于session绑定实现nat模型的lvs集群,并在RS上安装Discuz论坛


推荐阅读
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • DVWA学习笔记系列:深入理解CSRF攻击机制
    DVWA学习笔记系列:深入理解CSRF攻击机制 ... [详细]
  • Python 实战:异步爬虫(协程技术)与分布式爬虫(多进程应用)深入解析
    本文将深入探讨 Python 异步爬虫和分布式爬虫的技术细节,重点介绍协程技术和多进程应用在爬虫开发中的实际应用。通过对比多进程和协程的工作原理,帮助读者理解两者在性能和资源利用上的差异,从而在实际项目中做出更合适的选择。文章还将结合具体案例,展示如何高效地实现异步和分布式爬虫,以提升数据抓取的效率和稳定性。 ... [详细]
  • 本文介绍了如何利用HTTP隧道技术在受限网络环境中绕过IDS和防火墙等安全设备,实现RDP端口的暴力破解攻击。文章详细描述了部署过程、攻击实施及流量分析,旨在提升网络安全意识。 ... [详细]
  • 本文整理了一份基础的嵌入式Linux工程师笔试题,涵盖填空题、编程题和简答题,旨在帮助考生更好地准备考试。 ... [详细]
  • PTArchiver工作原理详解与应用分析
    PTArchiver工作原理及其应用分析本文详细解析了PTArchiver的工作机制,探讨了其在数据归档和管理中的应用。PTArchiver通过高效的压缩算法和灵活的存储策略,实现了对大规模数据的高效管理和长期保存。文章还介绍了其在企业级数据备份、历史数据迁移等场景中的实际应用案例,为用户提供了实用的操作建议和技术支持。 ... [详细]
  • 解决针织难题:R语言编程技巧与常见错误分析 ... [详细]
  • 本文详细介绍了使用 Python 进行 MySQL 和 Redis 数据库操作的实战技巧。首先,针对 MySQL 数据库,通过 `pymysql` 模块展示了如何连接和操作数据库,包括建立连接、执行查询和更新等常见操作。接着,文章深入探讨了 Redis 的基本命令和高级功能,如键值存储、列表操作和事务处理。此外,还提供了多个实际案例,帮助读者更好地理解和应用这些技术。 ... [详细]
  • 2012年9月12日优酷土豆校园招聘笔试题目解析与备考指南
    2012年9月12日,优酷土豆校园招聘笔试题目解析与备考指南。在选择题部分,有一道题目涉及中国人的血型分布情况,具体为A型30%、B型20%、O型40%、AB型10%。若需确保在随机选取的样本中,至少有一人为B型血的概率不低于90%,则需要选取的最少人数是多少?该问题不仅考察了概率统计的基本知识,还要求考生具备一定的逻辑推理能力。 ... [详细]
  • Linux负载均衡LVS(IPVS)
    一、LVS简介LVS是LinuxVirtualServer的简称,也就是Linux虚拟服务器,是一个由章文嵩博士发起的自由软件项目,现在已经是Linux ... [详细]
  • packagecom.panchan.tsmese.utils;importjava.lang.reflect.ParameterizedType;importjava.lang. ... [详细]
  • 事件是程序各部分之间的一种通信方式,也是异步编程的一种实现形式。本文将详细介绍EventTarget接口及其相关方法,以及如何使用监听函数处理事件。 ... [详细]
  • 本文介绍了Go语言中正则表达式的基本使用方法,并提供了一些实用的示例代码。 ... [详细]
  • 本文介绍了如何使用Python爬取妙笔阁小说网仙侠系列中所有小说的信息,并将其保存为TXT和CSV格式。主要内容包括如何构造请求头以避免被网站封禁,以及如何利用XPath解析HTML并提取所需信息。 ... [详细]
  • 本文将深入探讨 iOS 中的 Grand Central Dispatch (GCD),并介绍如何利用 GCD 进行高效多线程编程。如果你对线程的基本概念还不熟悉,建议先阅读相关基础资料。 ... [详细]
author-avatar
青枫望
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有