Ⅰ 如何在linux上使用HAProxy配置HTTP负载均衡系统
TTP负载均衡简介
HTTP负载均衡是一种网络解决方案,负责在托管相同应用内容的几台服务器之间分配进入的HTTP或HTTPS流量。由于在多台可用服务器之间均衡了应用请求,负载均衡系统就能防止任何应用服务器变成单一故障点,因而提高了整体的应用可用性和响应能力。它还让你可以随着不断变化的工作负载,轻松地缩小/扩大部署的应用系统的规模,只需添加或删除额外的应用服务器。
哪里使用负载均衡、何时使用?
由于负载均衡系统改进了服务器的利用率,最大限度地提高了可用性,只要你的服务器开始面临繁重负载,或者正为一个较庞大的项目规划架构,就应该使用它。事先规划好负载均衡系统的用途是个好习惯。那样,未来你需要扩展环境规模时,它会证明其用途。
HAProxy是什么东东?
HAProxy是一种流行的开源负载均衡和代理系统,面向GNU/Linux平台上的TCP/HTTP服务器。HAProxy采用了单一线程的事件驱动型架构而设计,它能够轻松地处理10G网卡线路速度,现广泛应用于许多生产环境中。其功能特性包括:自动检查健康状况、可定制的负载均衡算法、支持HTTPS/SSL以及会话速率限制等。
我们在本教程中要达到什么样的目的?
在本教程中,我们将逐步介绍为HTTP网站服务器配置基于HAProxy的负载均衡系统这个过程。
前提条件
你至少需要一台(最好是两台)网站服务器来证实所搭建负载均衡系统的功能。我们假设,后端HTTP网站服务器已经搭建并运行起来。
将HAProxy安装到Linux上
就大多数发行版而言,我们可以使用你所用发行版的软件包管理器来安装HAProxy。
将HAProxy安装到Debian上
在Debian中,我们需要为Wheezy添加向后移植功能。为此,请在/etc/apt/sources.list.d中创建一个名为“backports.list”的新文件,其内容如下:
deb http://cdn.debian.net/debian wheezybackports main
更新你的软件库数据,并安装HAProxy。
# apt get update
# apt get install haproxy
将HAProxy安装到Ubuntu上
# apt get install haproxy
将HAProxy安装到CentOS和RHEL上
# yum install haproxy
配置HAProxy
在本教程中,我们假设有两台HTTP网站服务器已搭建并运行起来,其IP地址分别为192.168.100.2和192.168.100.3。我们还假设,负载均衡系统将在IP地址为192.168.100.4的那台服务器处进行配置。
为了让HAProxy发挥功用,你需要更改/etc/haproxy/haproxy.cfg中的几个项目。这些变更在本章节中予以描述。万一某个配置对不同的GNU/Linux发行版而言有所不同,会在相应段落中加以注明。
1. 配置日志功能
你首先要做的工作之一就是,为你的HAProxy建立合适的日志功能,这对将来进行调试大有用处。日志配置内容位于/etc/haproxy/haproxy.cfg的global部分。下面这些是针对特定发行版的指令,用于为HAProxy配置日志。
CentOS或RHEL:
要想在CentOS/RHEL上启用日志功能,把:
log 127.0.0.1 local2
换成:
log 127.0.0.1 local0
下一步,在/var/log中为HAProxy创建单独的日志文件。为此,我们需要改动当前的rsyslog配置。为了让配置简单而清楚,我们将在/etc/rsyslog.d/中创建一个名为haproxy.conf的新文件,其内容如下。
$ModLoad imudp
$UDPServerRun 514
$template Haproxy,"%msg%\n"
local0.=info /var/log/haproxy.log;Haproxy
local0.notice /var/log/haproxystatus.log;Haproxy
local0.* ~
该配置将把基于$template的所有HAProxy消息隔离到/var/log中的日志文件。现在,重启rsyslog,让变更内容生效。
# service rsyslog restart
Debian或Ubuntu:
要想在Debian或Ubuntu上为HAProxy启用日志功能,把:
log /dev/log local0
log /dev/log local1 notice
换成:
log 127.0.0.1 local0
下一步,为HAProxy配置单独的日志文件,编辑/etc/rsyslog.d/中一个名为haproxy.conf的文件(或者Debian中的49-haproxy.conf),其内容如下。
$ModLoad imudp
$UDPServerRun 514
$template Haproxy,"%msg%\n"
local0.=info /var/log/haproxy.log;Haproxy
local0.notice /var/log/haproxystatus.log;Haproxy
local0.* ~
该配置将把基于$template的所有HAProxy消息隔离到/var/log中的日志文件。现在,重启rsyslog,让变更内容生效。
# service rsyslog restart
2. 设置默认值
下一步是为HAProxy设置默认变量。找到/etc/haproxy/haproxy.cfg中的defaults部分,把它换成下列配置。
log global
mode http
option httplog
option dontlognull
retries 3
option redispatch
maxconn 20000
contimeout 5000
clitimeout 50000
srvtimeout 50000
上述配置推荐HTTP负载均衡器使用,但可能不是最适合你环境的解决方案。如果那样,请参阅HAProxy参考手册页,进行适当的改动和调整。
3. 网站服务器集群的配置
网站服务器集群(Webfarm)的配置定义了可用的HTTP服务器集群。我们所建负载均衡系统的大部分设置都将放在这里。现在,我们将创建一些基本的配置,我们的节点将在这里加以定义。把从frontend部分到文件末尾的所有配置换成下列代码:
listen webfarm *:80
mode http
stats enable
stats uri /haproxy?stats
stats realm Haproxy\ Statistics
stats auth haproxy:stats
balance roundrobin
cookie LBN insert indirect nocache
option httpclose
option forwardfor
server web01 192.168.100.2:80 cookie node1 check
server web02 192.168.100.3:80 cookie node2 check
“listen webfarm *:80”这一行定义了我们的负载均衡系统将侦听哪些接口。出于本教程的需要,我将该值设为“*”,这让负载均衡系统侦听我们的所有接口。在实际场景下,这可能不合意,应该换成可从互联网来访问的某个接口。
stats enable
stats uri /haproxy?stats
stats realm Haproxy\ Statistics
stats auth haproxy:stats
上述设置声明,可以在http://<load-balancer-IP>/haproxy?stats处访问负载均衡系统的统计数字。这种访问由简单的HTTP验证以及登录名“haproxy”和密码“stats”来确保安全。这些设置应该换成你自己的登录信息。如果你不想让这些统计数字被人看到,那么可以完全禁用它们。
下面是HAProxy统计数字的一个例子。
“balance roundrobin”这一行定义了我们将使用哪种类型的负载均衡。在本教程中,我们将使用简单的轮叫调度算法,这对HTTP负载均衡来说完全绰绰有余。HAProxy还提供了其他类型的负载均衡:
•leastconn:连接数最少的服务器优先接收连接。
•source:对源IP地址进行哈希处理,用运行中服务器的总权重除以哈希值,即可决定哪台服务器将接收请求。
•uri:URI的左边部分(问号前面)经哈希处理,用运行中服务器的总权重除以哈希值。所得结果决定哪台服务器将接收请求。
•url_param:变量中指定的URL参数将在每个HTTP GET请求的查询串中进行查询。你基本上可以将使用蓄意制作的URL(crafted URL)的请求锁定于特定的负载均衡节点。
•hdr(name):HTTP头<name> 将在每个HTTP请求中进行查询,被定向到特定节点。
“cookie LBN insert indirect nocache”这一行让我们的负载均衡系统存储持久性cookie,这让我们得以准确查明集群中的哪个节点用于某一个会话。这些节点cookie将与指定的名称一并存储起来。在我们这个例子中,我使用了“LBN”,但你可以指定自己喜欢的任意名称。节点将为该cookie把字符串作为一个值而存储起来。
server web01 192.168.100.2:80 cookie node1 check
server web02 192.168.100.3:80 cookie node2 check
上述部分对网站服务器节点集群进行了定义。每台服务器都用内部名称(比如web01和web02)、IP地址和独特的cookie串来表示。cookie串可以定义为你需要的任何名称。我使用了简单的node1、node2 ... node(n)。
启动HAProxy
你完成了配置工作后,可以启动HAProxy,验证一切按预期运行。
在Centos/RHEL上启动HAProxy
使用下列指令,让HAProxy能够在系统启动后启动,并打开它:
# chkconfig haproxy on
# service haproxy start
当然,别忘了启用防火墙中的端口80,如下所示。
CentOS/RHEL 7上的防火墙:
# firewallcmd permanent zone=public addport=80/tcp
# firewallcmd reload
CentOS/RHEL 6上的防火墙:
把下面这一行添加到/etc/sysconfig/iptables中的这部分“:OUTPUT ACCEPT”:
A INPUT m state state NEW m tcp p tcp dport 80 j ACCEPT
然后重启iptables:
# service iptables restart
在Debian上启动HAProxy
使用下列指令启动HAProxy:
# service haproxy start
别忘了启用防火墙中的端口80,为此把下面这一行添加到/etc/iptables.up.rules:
A INPUT p tcp dport 80 j ACCEPT
在Ubuntu上启动HAProxy
让HAProxy能够在系统启动后启动,只要在/etc/default/haproxy中将“ENABLED”选项设为“1”:
ENABLED=1
启动HAProxy:
# service haproxy start
然后启用防火墙中的端口80:
# ufw allow 80
测试HAProxy
为了检查HAproxy是否在正常工作,我们可以执行下列步骤:
首先,用下列内容准备好test.php文件:
<?php
header('Content-Type: text/plain');
echo "Server IP: ".$_SERVER['SERVER_ADDR'];
echo "\nX-Forwarded-for: ".$_SERVER['HTTP_X_FORWARDED_FOR'];
?>
该PHP文件将告诉我们哪台服务器(即负载均衡系统)转发请求,哪台后端网站服务器实际处理请求。
把该PHP文件放到这两台后端网站服务器的根目录下。现在,使用curl命令,从负载均衡系统(192.168.100.4)提取这个PHP文件。
$ curl http://192.168.100.4/test.php
我们多次运行这个命令时,应该会看到下面两个输出交替出现(由于轮叫调度算法)。
Server IP: 192.168.100.2
X-Forwarded-for: 192.168.100.4
Server IP: 192.168.100.3
X-Forwarded-for: 192.168.100.4
如果我们停止这两台后端网站服务器中的其中一台,curl命令应该仍会执行,将请求定向到另一台可用的网站服务器。
结束语
至此,你应该有了一套完全实用的负载均衡系统,能够在轮叫循环模式下为你的网站节点提供请求。与往常一样,你可以随意更改配置,让它更适合自己的基础设施。希望本教程帮助你让自己的网站项目具有更强的抗压力和更高的可用性。
正如大家已经注意到的那样,本教程所含的设置适用于仅仅一套负载均衡系统。这意味着,我们把一个单一故障点换成了另一个单一故障点。在实际场景下,你应该部署至少两套或三套负载均衡系统,以防范可能出现的任何故障,但这不在本教程的讨论范围之内。
Ⅱ linux下输入http://localhost/phpmyadmin打不开,请问要怎么配置阿
解决的方法
首先检查apache是否工作,地址栏中输入http://127.0.0.1
当出现it works时说明apache工作正常
此时打开var/www 在此处建立一个软连接
sudo ln -s /usr/share/phpmyadmin
在地址栏上输入http://localhost/phpmyadmin就可以了
Ⅲ linux下apache 怎么把 http改为https
Gworg证书解压后根据以下配置:
Apache SSL配置
Listen 443 (如果配置已经存在就不要加)
LoadMole ssl_mole moles/mod_ssl.so (如果配置已经存在就不要加)
NameVirtualHost *:443 (非必须,配置多个SSL站点会需要)
<VirtualHost *:443>
ServerName www.gworg.cn
ServerAlias gworg.cn
DocumentRoot /var/www/html
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLCertificateFile /etc/ssl/server.crt
SSLCertificateKeyFile /etc/ssl/server.key
SSLCertificateChainFile /etc/ssl/server.ca-bundle
</VirtualHost>
Ⅳ 如何在linux配置http代理
可以在你的用户家目录下的.bashrc的最后加上:
export http_proxy=your_proxy_address:port
export https_proxy=your_proxy_address:port
export ftp_proxy=your_proxy_address:port
直接在terminal窗口输入这些也可以。
Ⅳ 如何在Linux上使用HAProxy配置HTTP负载均衡系统
一、安装HAProxy
1、创建HAProxy运行账户和组
groupadd haproxy #添加haproxy组
useradd -g haproxy haproxy -s /bin/false #创建nginx运行账户haproxy并加入到haproxy组,不允许haproxy用户直接登录系统
2、安装编译工具
yum install gcc gcc-c++ make openssl-devel kernel-devel
3、安装HAProxy
HAProxy下载地址:http://haproxy.1wt.eu/download/1.5/src/haproxy-1.5.2.tar.gz
上传haproxy-1.5.2.tar.gz到/usr/local/src目录中
cd /usr/local/src #进入软件包存放目录
tar zxvf haproxy-1.5.2.tar.gz #解压
cd haproxy-1.5.2 #进入安装目录
make TARGET=linux26 CPU=x86_64 PREFIX=/usr/local/haprpxy #编译
make install PREFIX=/usr/local/haproxy #安装
参数说明:
TARGET=linux26 #使用uname -r查看内核,如:2.6.18-371.el5,此时该参数就为linux26
CPU=x86_64 #使用uname -r查看系统信息,如x86_64 x86_64 x86_64 GNU/Linux,此时该参数就为x86_64
PREFIX=/usr/local/haprpxy #/usr/local/haprpxy为haprpxy安装路径
4、设置HAProxy
mkdir -p /usr/local/haproxy/conf #创建配置文件目录
mkdir -p /etc/haproxy #创建配置文件目录
cp /usr/local/src/haproxy-1.5.2/examples/haproxy.cfg /usr/local/haproxy/conf/haproxy.cfg #拷贝配置模板文件
ln -s /usr/local/haproxy/conf/haproxy.cfg /etc/haproxy/haproxy.cfg #添加配置文件软连接
cp -r /usr/local/src/haproxy-1.5.2/examples/errorfiles /usr/local/haproxy/errorfiles #拷贝错误页面
ln -s /usr/local/haproxy/errorfiles /etc/haproxy/errorfiles #添加软连接
mkdir -p /usr/local/haproxy/log #创建日志文件目录
touch /usr/local/haproxy/log/haproxy.log #创建日志文件
ln -s /usr/local/haproxy/log/haproxy.log /var/log/haproxy.log #添加软连接
cp /usr/local/src/haproxy-1.5.2/examples/haproxy.init /etc/rc.d/init.d/haproxy #拷贝开机启动文件
chmod +x /etc/rc.d/init.d/haproxy #添加脚本执行权限
chkconfig haproxy on #设置开机启动
update-rc.d haproxy defaults 99 # ubuntu 设置开机启动
ln -s /usr/local/haproxy/sbin/haproxy /usr/sbin #添加软连接
5、配置haproxy.cfg参数
cp /usr/local/haproxy/conf/haproxy.cfg /usr/local/haproxy/conf/haproxy.cfg-bak #备份
vi /usr/local/haproxy/conf/haproxy.cfg #编辑,修改
global
log 127.0.0.1 local0 notice
maxconn 2000
user haproxy
group haproxy
defaults
log global
mode http
option httplog
option dontlognull
retries 3
option redispatch
timeout connect 5000
timeout client 10000
timeout server 10000
listen appname 0.0.0.0:80
mode http
stats enable
stats uri /haproxy?stats
stats realm Strictly\ Private
stats auth A_Username:YourPassword
stats auth Another_User:passwd
balance roundrobin
option httpclose
option forwardfor
server lamp1 10.0.0.1:80 check
server lamp2 10.0.0.2:80 check
这里的haproxy.cfg只是一个案例,你可以根据实际情况修改
Ⅵ 如何在linux系统搭建http服务
1、安装ftp服务端,方便你从客户端上传文件。linux上一般安装vsftp.VSFTP的软件安装包是: vsftpd-2.2.2-12.el6_5.1.i686.rpm
查询:#rpm -q vsftpd
安装:#rpm -ivh vsftpd-2.2.2-12.el6_5.1.i686.rpm或者直接yum install vsftpd
启动、停止及重启VSFTP的命令: #service vsftpd start/stop/restart
配置文件:
/etc/vsftpd/vsftpd.conf //主配置文件
/etc/vsftpd.ftpusers //被禁止登录FTP的用户文件
/etc/vsftpd.user_list //允许登录FTP的用户文件
a、将登录后的用户限制在本地家目录下:
#vi /etc/vsftpd/vsftpd.conf
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
新建受限用户的列表文件并加入受限用户名
#vi /etc/vsftpd.chroot_list
raykeso
重启ftp服务
#service vsftpd restart
2、安装apache,开启目录索引,这样你就可以浏览和下载文件。
apache配置文件
<Directory "I:/build/dist"> #设置浏览文件的目录
Options Indexes #开启目录列表索引模式Order allow,deny
Allow from all
</Directory>
Ⅶ 在Linux环境下,APACHE和PHP配置文件怎么设置(RPM包)
LAMP配置与应用 LAMP(Linux+Apache+Mysql+Php)配置:
Fedora 5已默认安装了php,可以使用rmp -q php查看其版本号
安装mysql客户端mysql(与perl-DBI包有依赖关系,要先安装)
安装mysql服务端mysql-server(与perl-DBD包有依赖关系,要先安装)
安装php支持mysql的模块php-mysql(与php-pdo包有依赖关系,要先安装)
Mysql的web管理工具phpMyAdmin
安装
下载并解压phpMyAdmin的包到某个web目录(或为phpMyadmin建立虚拟主机,将该包解压到虚拟主机目录)
#tar -xzvf phpMyAdmin-2.10.0.2-all-languages.tar.gz
执行下列命令:
#cd phpMyAdmin
#mkdir config #建立一个用来保存配置的目录
#chmod o+rw config #更改该目录的权限为属主可读写
#cp config.sample.inc.php config/ #将当前目录下的config.sample.inc.php复制到config
#chmod o+w config/config.inc.php # 使该文件的属主具有写权限
运行安装向导页面
在浏览器中打开scripts/setup.php,按照向导页面添入相关信息,最后单击“保存”,则所做的配置保存在config/config.inc.php中。(注:如果config子目录没有建立,或没有对该文件的写权限的话,则会出现"Cannot load or save configuration."的提示,这种情况下应选择“DownLoad”下载到本地,再上传到phpMyAdmin的主目录下 ),主要有以下样目需要添写:
User for config auth__________________
Password for config auth__________________
phpMyAdmin control user____________________
phpMyAdmin control user password______________________
phpMyAdmin database for advanced features__________________
配置成功保存的话,执行下面命令
#mv config/config.inc.php . #将配置文件移动到phpMyAdmin的主目录
#chmod o-r config.inc.php #为安全起见,移去该文件的读写权限
在浏览器中打开phpMyAdmin对应的站点
phpbb应用
注:以下头3步有关mysql的操作也可以在webmin中完成.
mysql的账号管理
1) 要设置root用户的密码为123456,则在系统提示符下执行下面的命令:
#mysqladmin -u root -p password "123456"
2) 要在mysql命令行客户端,设置root用户的密码为123456,则需执行以下命令:
mysql> use mysql;
mysql> update user set Password=password('123456') where User='root';
mysql> flush privileges;
3) 如果要新增用户u1,给他授予对数据库bb中所有表(*)的所有权限(all),密码设为888888,则在mysql提示符下:
mysql> grant all on bb.* to 'u1'@'localhost' identified by '888888';
如果root用户有密码,则进入mysql客户端需用下面的命令:#mysql -u root -p
新建phpbb论坛所要用到的数据库:mysql>create database XXX;
为phpbb所在目录新建虚拟主机
在浏览器中访问该虚拟主机,以安装phpbb
注意:在安装结尾,选择下载配置文件,自行上传.然后删除install,contrib两个目录
php配置实例
1.使用Apache配置基本的web站点,使客户端浏览简体中文网页能正常显示、新增支持的主页文件index.htm index.php default.htm default.html。最后要能在其它计算机上通过域名访问,比如www.yyy.net03.org。
2.在web站点下实现虚拟目录,即web站点的子目录,该子目录与主目录不一定是上下目录关系.同时,允许该目录有目录列表功能(即在没有找到主文件件的时候,显示当前目录下的列表).
3.实现Linux用户个人站点.
4.配置多个基于名称的虚拟主机,比如www1.yyy.net03.org,www2.yyy.net03.org。最后要能在其它计算机上通过域名访问。
5.配置多个基于IP的虚拟主机,比如lit.yyy.net03.org,mil.yyy.net03.org。最后要能在其它计算机上通过域名访问。
6.配置LAMP环境
7.配置phpbb论坛,并使该论坛可以通过形如bbs.yyy.net03.org的形式访问。
(*)8. 删除系统原有Apache、php、Mysql项目,使用源文件安装最新版本的Apache、php、Mysql
利用源代码安装LAMP
首先要在相关网站获取Apache、Mysql、Php的源码包,一般扩展名为xxx.tar.gz.
删除系统原有Apache、php、Mysql项目,可能要用到下面的命令
# rpm -e xxx
# rpm -e xxx nodeps #不考虑依赖关系而删除xxx包
# rpm -e xxx yyy zzz #删除xxx,yyy,zzz包
如果无法删除一个RPM包,可以使用以下两步:
#rpm -f /var/lib/rpm
#rpm --rebuilddb
或:
#rpm -ivh --justdb xxx
#rpm -e xxx
1. 安装Apache(httpd-2.2.8)
# ./configure --enable-so
# make
# make install
# /usr/local/apache2/bin/apachectl start
2. 安装Mysql(Mysql-5.0.22)
1) 建立用户及组,如果在/etc/passwd中已有该用户,则下列操作可以省略
shell> groupadd mysql
shell> useradd -g mysql mysql
2) 解压、配置编译安装
shell> gunzip < mysql-VERSION.tar.gz | tar -xvf -
shell> cd mysql-VERSION
shell> ./configure --prefix=/usr/local/mysql #配置(指定mysql安装路径)
shell> make #编译
shell> make install #安装
3) 配置mysql
shell> cp support-files/my-medium.cnf /etc/my.cnf #建立mysql配置文件
shell> cp support-files/mysql.server /etc/init.d/ #建立mysql控制脚本
shell> cd /usr/local/mysql
shell> bin/mysql_install_db --user=mysql #建立mysql系统数据库
shell> chown -R root . #更改当前目录及子目录所有者
shell> chown -R mysql var #更改var目录及子目录所有者
shell> chgrp -R mysql . #更改当前目录及子目录所属组
4) 启动mysql
shell> bin/mysqld_safe --user=mysql & #以后台模式运行mysqld服务
shell> chkconfig --list | less #查看服务列表
shell> chkconfig --add mysql.server #将mysql.server添加到服务列表
shell> chkconfig --list | less #查看服务列表
shell> service mysql.server restart
shell> /usr/local/mysql/bin/mysqladmin -u root -p password '888888' #更改mysql管理用户root的密码
3. 安装php(php5 on Apache 2 Shared Mole Version)
1) tar -zxvf php-NN.tar
2) cd php-NN
3) ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql
4) make
5) make install
6) 建立php配置文件php.ini
# cp php.ini-dist /usr/local/lib/php.ini
7) 编辑http配置文件 httpd.conf 使之加载PHP模块
对于 PHP 4,添加下句:
LoadMole php4_mole moles/libphp4.so
对于 PHP 5,添加下句:
LoadMole php5_mole moles/libphp5.so
8) 编辑http配置文件 httpd.conf,使之能解析扩展名为php的文件
AddType application/x-httpd-php .php .phtml
9) 编辑http配置文件 httpd.conf,修改主页文件
DirectoryIndex index.php index.htm index.html
10) 重启httpd服务
# /usr/local/apache2/bin/apachectl start
或
# /usr/local/apache/bin/apachectl -k start
11) 编辑index.php文件,并在浏览器中访问该站点,如果出现关于php的当前配置信息(其中有mysql的配置项),表示LAMP安装成功。
$vi index.php
<?php
phpinfo()
?>
Ⅷ 如何修改linux中HTTP默认目录
/etc/httpd/conf/httpd.conf
DocumentRoot "路径"