设为首页 收藏本站
查看: 937|回复: 0

[经验分享] 实现PostgreSQL数据库服务器的负载均衡

[复制链接]

尚未签到

发表于 2016-11-20 10:52:58 | 显示全部楼层 |阅读模式
实验名称:实现PostgreSQL数据库服务器的负载均衡
操作系统:Debian 3.0 r2
所使用的内核:linux-2.4.23
实验用到的模块: ipvsadm-1.21,PostgreSQL (ipvsadm命令的详细用法请参考这里)
作者:lna@networksbase.com
功能描述:这是一个关于LinuxVirtualServer的比较简单的实验,是如何实现两台PostgreSQL数据库的负载均衡。做这个实验的目的有三个:
1,是一个朋友的需求;
2,我本人也有一段时间没有看LVS方面的东西了,借这个机会再复习一下;
3,因为这是个最简单的LVS的实验,对LVS的初学者来说有很好的帮助。
安装步骤:
1, 首先你要重新编译内核,如果你不清楚如何编译内核,可以到我们的“基础知识”栏目中去看看。将NetFilter和LVS的选项编译进你的内核,你可以参考一下这三张图片:网络编译选项,NetFilter编译选项,LVS编译选项
2, 内核编译完成后用新内核启动系统,然后安装ipvsadm
tar zxvf ipvsadm-1.21.tar.gz
cd ipvsadm-1.21
make
make install
安装完毕
3, 我们现在有如下的网络结构,要实现对两台PostgreSQL服务器的负载均衡,
实现对这两台PostgreSQL服务器:192.168.3.2,192.168.3.3的负载均衡很容易,用下面的几条命令:
echo 1 > /proc/sys/net/ipv4/ip_forward
ipvsadm -A -t 192.168.1.100:5432 -s rr
ipvsadm -a -t 192.168.1.100:5432 -r 192.168.3.2:5432 -m -w 1
ipvsadm -a -t 192.168.1.100:5432 -r 192.168.3.3:5432 -m -w 1
解释:
echo 1 > /proc/sys/net/ipv4/ip_forward:打开Linux LVS Router的路由功能。否则数据包是不会被转发的
ipvsadm -A -t 192.168.1.100:5432 -s rr :添加一台虚拟的服务器,虚拟服务器的IP地址是192.168.1.100,端口是5432,用的算法是Round Robin(轮寻)
ipvsadm -a -t 192.168.1.100:5432 -r 192.168.3.2:5432 -m -w 1
在虚拟服务器192.168.1.100中添加真实的服务器192.168.3.2:5432;
ipvsadm -a -t 192.168.1.100:5432 -r 192.168.3.3:5432 -m -w 1
在虚拟服务器192.168.1.100中添加真实的服务器192.168.3.3:5432
--------------------------------------------------------------------------------
以上是这个实验的全部的内容,现在我们对他做一个小的讨论:
1, 首先,这个实验是针对PostgreSQL集群的,PostgreSQL的默认端口号5432。如果你要做其他服务的集群,同样没问题的如http、FTP、SMTP,你只需要将命令里的端口号5432改成相应的端口号就可以了。
2, 这个PostgreSQL的集群并不是很理想,有两种情况值得提一下:
(A),当两台PostgreSQL中的一台出现故障时,ipvsadm并不能自动的检测到,不会将出现故障的服务器从集群中剔除,ipvsadm仍然会按照定好的规则对两台服务器做负载均衡,这样就会造成PostgreSQL的服务时好时坏。
(B),因为我们现在只使用了一台Linux LVS Router,当Linux LVS Router出现故障时,整个PostgreSQL将停止服务。
解决这两个问题的方法是用一种方法,时时的监测集群中所有机器包括服务器、LVS Router的健康状态,如果有服务器出现了故障,集群系统自动的将他从系统中剔除;然后准备两台以上的LVS Router,有一台是主用,其他的作为备份,当主用的LVS Router出现故障时,作为备份的LVS Router会及时的接管主用LVS Router的工作。 在LVS项目中有一个组件叫Keepalived,Keepalived是专门做这项工作的,关于Keepalived这方面的应用请参考这个实验:《架构高稳定、高可用、高效率的服务器负载均衡(Load balancer)系统》同时Keepalived也是Linux下VRRP的解决方案。
3,在实际的应用中,我们一般不会采用这样的网络架构,大多数情况下我们采用的是如下图示的架构:
数据库的写入动作是由后台的“数据库编辑人员”录入的,数据库的内容存储在“网络存储设备”中。访问数据库的人员通过PostgreSQL集群访问数据库的内容。
关于PostgreSQL的安装、启动的一点小问题:
1,很多时候我们在安装一个从来没有用过的GNU 软件时,总会遇到些小问题,这就需要我们从新回过头来去看他的文档,检查他的配置。我在第一次安装PostgreSQL时就遇到了一点小问题,在这里写出来,供大家参考:
PostgreSQL的安装还是比较简单的,完全按照他文档中的INSTALL文件来做就可以了,以下是我的安装步骤:
./configure –prefix=/usr/local/pgsql
gmake
su
gmake install
adduser postgres
mkdir /usr/local/pgsql/data
chown postgres /usr/local/pgsql/data
su - postgres
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
2,启动PostgreSQL:
su - postgres
/usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data >logfile 2>&1 &
这样就安装好了,我的问题出现在启动的时候,启动时,我查看系统中的进程,发现PostgreSQL的进程已经在运行,但5432端口并没有启动,最后发现是配置文件的问题:
将/usr/local/pgsql/data/postgresql.conf文件中的
# tcpip_socket = false 改成
tcpip_socket = yes
为了能让其他的机器都能访问PosgreSQL服务还要修改/usr/local/pgsql/data/pg_hba.conf
加入如下的行:
#TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD
host all all 0.0.0.0 0.0.0.0 trust
这句话的意思是开放所有机器对PostgreSQL的访问权限。
我们这个实验并不是专门针对PostgreSQL的,所以其他的不多说了。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-302838-1-1.html 上篇帖子: PostgreSQL 8.3.3 和8.2.9 发布 下篇帖子: Howto Backup PostgreSQL Databases Server With pg_dump command
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表