集群及LVS
集群:
一组通过高速网络互联的计算机组,并以单一系统的模式加以管理
价格很多服务器集中起来,提供同一种服务,在客户端看起来就像只有一个服务器
可以在付出较低成本的情况下获得在性能,可靠性,灵活性方面的相对较高的收益
任务调度室集群系统中的核心技术
集群目的:
提高性能:如计算密集型应用,如:天气预报,核试验模拟
降低成本:相对于百万美元级的超级计算机,价格便宜
提高可扩展性:只要增加集群节点即可
增强可靠性:多个节点完成相同功能,避免单点失败
集群分类:
高性能计算集群HPC:通过以集群开发的并行应用程序,解决复杂的科学问题
负载均衡(LB)集群:客户端负载在计算机集群中尽可能平均分摊
高可用(HA)集群:避免单点故障,当一个系统发生故障时,可以快速迁移
实例:准备LAMP分离结构
环境:准备两台web服务器和一台数据库服务器
mysql:192.168.4.1
web1:192.168.4.2
web2:192.168.4.3
mysql端
[root@mysql1 ~]# yum -y install mysql-server
[root@mysql1 ~]# /etc/init.d/mysqld start ;chkconfig mysqld on
mysql> grant all on *.* to 'admin'@'192.168.4.2' identified by '123456';
mysql> grant all on *.* to 'admin'@'192.168.4.3' identified by '123456';
web端
[root@web1 ~]# yum -y install httpd php php-mysql
[root@web1 ~]# /etc/init.d/httpd start ;chkconfig httpd on
[root@web2 ~]# yum -y install httpd php php-mysql
[root@web2 ~]# /etc/init.d/httpd start ;chkconfig httpd on
在web1安装Discuz
[root@web1 ~]# unzip Discuz_X3.2_SC_UTF8.zip
[root@web1 ~]# mv upload/ /var/www/html/bbs
[root@web1 ~]# chown -R apache config/ data/ uc_*
[root@web1 ~]# firefox http://192.168.4.2/bbs
数据库服务器: 192.168.4.1(mysql服务器ip)
数据库名:hydra(自带的函数会自动创建次库)
数据库用户名:admin(在mysql服务器授权的用户)
数据库密码:123456
在mysql端查看数据库
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| hydra |
| mysql |
| test |
+--------------------+
在web端测试注册一个叫hydra的用户并发帖,
帖子主题为hydra 内容为 Anonymous!!!!!!
在mysq服务器查看用户数据,查看发帖内容
mysql> select uid,username,password,email from pre_common_member;
+-----+----------+----------------------------------+----------------+
| uid | username | password | email |
+-----+----------+----------------------------------+----------------+
| 1 | admin | eab19088f6ff65eb97530281c7d49f3e | root@localhost |
| 2 | hydra | f0b02c4f4fe8adf540bf7ed8a7522d03 | 12@qq.com |
+-----+----------+----------------------------------+----------------+
mysql> select author,subject,message from pre_forum_post;
+--------+---------+-----------------------+
| author | subject | message |
+--------+---------+-----------------------+
| hydra | hydra | Anonymous!!!!!! |
+--------+---------+-----------------------+
在第二台web2服务器
将第一台的web1服务器的bbs项目打包拷贝到第二台web1服务器即可
[root@web1 html]# tar -czf bbs.tar.gz bbs/
[root@web1 html]# scp bbs.tar.gz 192.168.4.3:/var/www/html/
[root@web2 html]# tar -xf bbs.tar.gz
[root@web2 html]# firefox http://192.168.4.3/bbs(在第二台web服务器测试访问,并注册用户测试)
在mysql服务器查看
mysql> select author,subject,message from pre_forum_post;
+-----------+----------+-----------------------+
| author | subject | message |
+-----------+----------+-----------------------+
| hydra | hydra | Anonymous!!!!!! |
| | | |
| Anonymous | ha ha ha | ha ha ha ha ha |
+-----------+----------+-----------------------+
——————————————————————————————————————————————————————————————————
LVS
LVS项目
linux虚拟服务器(lvs)由章文嵩博士创建
lvs可以实现高可用的,可伸缩的web,mail,cache和media等网络服务
最终目标是利用linux操作系统和lvs集群软件实现一个高可用,高性能,低成本的服务器应用集群
负载均衡集群LB
硬件:F5
软件:lvs,haproxy
lvs集群组成
前端:负载均衡层,由一台或多台负载调度器构成
中间:服务器群组层,由一组实际运行应用服务器组成
底端:数据共享存储层,提供共享存储空间的存储区域
lvs术语
Director Server:调度服务器,将负载分发到Real Server的服务器
Real Server:真实服务器,真正提供应用的服务器
VIP:虚拟ip地址,公布给用户访问的虚拟ip地址
RIP:真实ip地址,集群节点上使用的ip地址
DIP:调度器连接节点服务器的ip地址
负载均衡调度算法
lvs目前实现了10种调度算法
常用的调度算法有4种
轮询
加权轮询
最少连接
加权最少连接
实例:配置LVS NAT模式
环境:准备一台lvs服务器,修改两台web服务器的网关,指向dir
打开调度器的路由转发功能
eth0:192.168.4.4
eth2:201.1.1.4
web端
[root@web1 ~]# vim /etc/sysconfig/network
GATEWAY=192.168.4.4
[root@web2 ~]# vim /etc/sysconfig/network
GATEWAY=192.168.4.4
调度器端
[root@lvs1 ~]# echo 1 > /proc/sys/net/ipv4/ip_forward(临时生效)
[root@lvs1 ~]# vim /etc/sysctl.conf(永久生效)
net.ipv4.ip_forward = 1
[root@lvs1 ~]# sysctl -p(生效)
安装lvs
[root@lvs1 ~]# vim /etc/yum.repos.d/rhel6.repo (需要添加yum源)
[rhel]
name=Linux NSD
baseurl=file:///root/myiso/LoadBalancer(需要加上这个路径,yum默认找server这个库)
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[root@lvs1 ~]# yum -y install ipvsadm(安装lvs)
ipvsadm用法
ipvsadm -Ln:查看调度规则
创建虚拟服务器
-A:添加虚拟服务器
-t:设置群集地址(VIP,Virtual IP)
-s:指定负载调度算法
添加,删除服务器节点
-a:添加真实服务器
-d:删除真实服务器
-r:指定真实服务器(Real Server)的地址
-m:使用NAT模式,-g,-i分别对应DR,TUN模式
-w:为节点服务器设置权重,默认为1
[root@lvs1 ~]# ipvsadm -A -t 201.1.1.4:80 -s wrr(wrr加强轮询算法)
[root@lvs1 ~]# ipvsadm -a -t 201.1.1.4:80 -r 192.168.4.2 -m -w 2
[root@lvs1 ~]# ipvsadm -a -t 201.1.1.4:80 -r 192.168.4.3 -m
[root@lvs1 ~]# firefox http://201.1.1.4/bbs(测试访问)
[root@lvs1 ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 201.1.1.4:80 wrr
-> 192.168.4.2:80 Masq 2 0 0
-> 192.168.4.3:80 Masq 1 0 0
[root@lvs1 jiaobeng]# vim web_start.sh(写出脚本,扫描服务器,如果有服务器出问题则把次服务器干掉,没问题则添加上,死循环 每5秒执行一次)
#!/bin/bash
VIP=201.1.1.4:80
RIP1=192.168.4.2
RIP2=192.168.4.3
while [ 1 ]
for ip in $RIP1 $RIP2
do
web_stat=$(nmap -n -sT $ip -p 80 2> /dev/unll | grep open)
ip_in_lvs=$(ipvsadm -Ln | grep $ip)
if [ -z "$web_stat" -a -n "$ip_in_lvs" ];then
ipvsadm -d -t $VIP -r $ip
elif [ -n "$web_stat" -a -z "$ip_in_lvs" ];then
ipvsadm -a -t $VIP -r $ip -m
fi
done
done
[root@lvs1 jiaobeng]# chmod +x web_start.sh (加执行权)
[root@lvs1 ~]# service ipvsadm save(存盘,不保存重启服务后配置就没有了)
实例:配置LVS DR模式
环境:先把NAT环境下的LVS连接外网的ip移除,清空lvs nat配置
在lvs上为物理网卡配置vip,
在两台real server上为lo配置vip
lvs端
[root@lvs1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth2(把IPADDR=201.1.1.4删除即可)
[root@lvs1 ~]# /etc/init.d/ipvsadm restart(清空规则)
[root@lvs1 ~]# ipvsadm -D -t 201.1.1.4:80(存盘后要这样清空)
[root@lvs1 network-scripts]# cp ifcfg-eth0 ifcfg-eth0:0(拷贝网卡)
[root@lvs1 network-scripts]# vim ifcfg-eth0:0
DEVICE=eth0:0(只修改这两行,其他不变)
IPADDR=192.168.4.100
[root@lvs1 ~]# /etc/init.d/network restart
[root@lvs1 ~]# ifconfig
eth0:0 Link encap:Ethernet HWaddr 54:52:01:01:04:01
inet addr:192.168.4.100 Bcast:192.168.4.255 Mask:255.255.255.0
real server端(两台都做相同的操作)
[root@web1 network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@web1 network-scripts]# vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.4.100
NETMASK=255.255.255.255
NETWORK=192.168.4.100
BROADCAST=192.168.4.100
ONBOOT=yes
[root@web1 network-scripts]# /etc/init.d/network restart
配置real server端内核参数(两台都做相同的操作)
[root@web1 ~]# sysctl -a | grep arp_i
[root@web1 ~]# echo 'nat.ipv4.conf.all.arp_ignore = 1' >> /etc/sysctl.conf
[root@web1 ~]# echo 'nat.ipv4.conf.lo.arp_ignore = 1' >> /etc/sysctl.conf
[root@web1 ~]# sysctl -a | grep arp_a
[root@web1 ~]# echo 'net.ipv4.conf.all.arp_announce = 2' >> /etc/sysctl.conf
[root@web1 ~]# echo 'net.ipv4.conf.lo.arp_announce = 2' >> /etc/sysctl.conf
[root@web1 ~]# sysctl -p(生效)
lvs端配置
[root@lvs1 ~]# ipvsadm -A -t 192.168.4.100:80 -s lc
[root@lvs1 ~]# ipvsadm -a -t 192.168.4.100:80 -r 192.168.4.2
[root@lvs1 ~]# ipvsadm -a -t 192.168.4.100:80 -r 192.168.4.3 -g -w 2(-g 路由模式 w 2权重为2)
[root@lvs1 ~]# ipvsadm -Ln(查看规则)
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.4.100:80 lc
-> 192.168.4.2:80 Route 1 0 0
-> 192.168.4.3:80 Route 2 0 0
[root@web2 ~]# firefox http://192.168.4.100/bbs(测试访问)
————————————————————————————————————————————————————————————————————————————————————————
linux 集群及lvs的更多相关文章
-
基于VMware的虚拟Linux集群搭建-lvs+keepalived
基于VMware的虚拟Linux集群搭建-lvs+keepalived 本文通过keepalived实现lvsserver的的双机热备和真实server之间的负载均衡.这方面的blog挺多,可是每一个 ...
-
Linux集群服务 LVS
linux虚拟服务器(LVS)项目在linux操作系统上提供了最常见的负载均衡软件. 集群定义: 集群(cluster)技术是一种较新的技术,通过集群技术,可以在付出较低成本的情况下获得在性能.可靠性 ...
-
Linux集群及LVS简介
一.什么是集群 通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一台计算机.集群系统中的单个计算机通常称为节点,通常通过局域网连接,但也有其它的 ...
-
Linux centosVMware Linux集群架构LVS DR模式搭建、keepalived + LVS
一.LVS DR模式搭建 三台机器 分发器,也叫调度器(简写为dir) davery :1.101 rs1 davery01:1.106 rs2 davery02:11.107 vip 133.200 ...
-
Linux 笔记 - 第十八章 Linux 集群之(二)LVS 负载均衡集群
一.前言 Linux 集群从功能上可以分为两大类:高可用集群和负载均衡集群.上一篇已经讲解了 HA 高可用集群,此节讲解负载均衡集群. 负载均衡集群(Load Balance Cluseter,简称 ...
-
Linux集群
集群的起源: 集群并不是一个全新的概念,其实早在七十年代计算机厂商和研究机构就开始了对集群系统的研究和开发.由于主要用于科学工程计算,所以这些系统并不为大家所熟知.直到Linux集群的出现,集群的概念 ...
-
linux集群架构
Linux集群架构 根据功能划分为两大类:高可用和负载均衡 高可用集群通常为两台服务器,一台工作,另外一台作为冗余,当提供服务的机器宕机,冗余将接替继续提供服务 实现高可用的开源软件有:heart ...
-
Linux集群架构(二)
Linux集群架构(二) 目录 八.LVS DR模式搭建 九.keepalived + LVS 十.扩展 八.LVS DR模式搭建 1.实验环境: 四台机器: client: 10.0.1.50 Di ...
-
Linux集群架构(一)
第二十八课 Linux集群架构(一) 目录 一. 集群介绍 二. keepalived介绍 三. 用keepalived配置高可用集群 四. 负载均衡集群介绍 五. LVS介绍 六. LVS调度算法 ...
随机推荐
-
java接口中定义成员变量
//抽象类中可以定义如下成员变量:public abstract class People { public String name; public int age; public abstract ...
-
vim基本命令
vim基本命令 1.vim#在命令行中输入vim,进入vim编辑器2.i#按一下i键,下端显示 --INSERT--#插入命令,在vim中可能任意字符都有作用3.Esc#退出i(插入)命令进行 ...
-
Oracle 流复制实践笔记
最近因为业务需求,需要在两个数据库之间做双向实时同步,遂实践了一把Oracle的流复制,遇到了很多疑难问题,最终也貌似成功,现记录如下. 我是使用OEM来实现流复制的. 10.进行流复制的两个数据库的 ...
-
C#通过RFC调用SAP
using System;using System.Collections.Generic;using SAP.Middleware.Connector;using System.Data;using ...
-
JSOI2009 游戏
1443: [JSOI2009]游戏Game Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 557 Solved: 251[Submit][Stat ...
-
【转】maven 项目出现 java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
http://blessht.iteye.com/blog/1104450 http://www.cnblogs.com/zhouyalei/archive/2011/11/30/2268606.ht ...
-
javascript入门基础知识
JavaScript介绍: 1. javascrip是互联网上最流行的脚本语言,可用于Web和HTML,更可广泛用于服务器.pc端.移动端. 2. javascript脚本语言: javascript ...
-
log4j2.xml配置及例子
1.使用log4j2需要下载包,如下: 2.配置文件可以有三种格式(文件名必须规范,否则系统无法找到配置文件): classpath下名为 log4j-test.json 或者log4j-test.j ...
-
java装箱跟拆箱解析
/** * 在jdk1.5之后,java为基本数据类型到对应的应用数据类型提供了自动拆箱装箱操作 * 不管是自动拆箱还是自动装箱都是应用数据类型有的方法,基本数据类型是没有任何方法可调用的 *从概念上 ...
-
在Objective-C 中使用字符生成NSArray、NSDictionary、NSNumber
@符号不仅可以生成字符串,还可以生成其他数据类型如NSArray.NSDictionary和NSNumber,是一种简洁快速的用法. // NSArray array = [NSArray array ...