1.1 Synopsis

In this part, we will explain how to create a load-balancer withnginxfor a lot of OpenERPservers.The

load-balancing

and the

multi-process

mode of OpenERPonly work with gunicorn.And in this case, the cron are not launched by the system.

1.2 Nginx

Nginx is a free, open-source, high-performance HTTP server and reverse proxyYou can copy/paste the code in

/etc/nginx/sites-enabled/

with a filenameYou will find the documentation about the upstream keyword at

http://wiki.nginx.org/HttpUpstreamModule

 

upstream
openerp_servers{
server
openerp-server1.back.local max_fails=3 fail_timeout=30s;
server
openerp-server2.back.local max_fails=3 fail_timeout=30s;
server
openerp-server3.back.local max_fails=3 fail_timeout=30s;}
serfver
{
listen
80;
server_name
openerp.example.com;
rewrite
^ https://$server_name$request_uri?permanent;}
server
{
listen
443;
server_name
openerp.example.com;
access_log
/var/log/nginx/openerp.example.com-access.log;
error_log
/var/log/nginx/openerp.example.com-error.log debug;
ssl
on;
ssl_certificate
/etc/nginx/ssl/server.crt;
ssl_certificate_key
/etc/nginx/ssl/server.key;
ssl_session_timeout
5m;
ssl_protocols
SSLv3 TLSv1;
ssl_ciphers
ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP;
ssl_prefer_server_ciphers
on;
location
/{
proxy_pass
http://openerp_servers;
proxy_set_header
Host$http_host;
proxy_set_header
X-Real-IP$remote_addr;
proxy_set_header
X-Forwarded-For$proxy_add_x_forwarded_for;}}

1.3 Gunicorn

Gunicornis a Python WSGI HTTP Server for UNIX.

We will use it for the multi-process mode of OpenERP.On the OpenERP servers, just install gunicorn via apt-get

# apt-get install python-gunicorn

1.4 OpenERP

You should configure OpenERP with the gunicorn mode.In the directory of the server, you can execute gunicorn with the following command

cd/home/openerp/servergunicorn openerp:wsgi.proxied.application -c gunicorn.conf.py

2.1 PostgreSQL

2.1.1 Synopsis

PostgreSQLis a free and open source database server.In this documentation, we will use PostgreSQL 9.x because this is the first release with theStreaming Replication.In PostgreSQL, there are two kind of replication.•

Warm Standby

It’s a simple replication without any access.•

Hot Standby

, in this mode, you can connect to the database but only in read access.We will use the

Hot Standby

mode for the Streaming Replication.In this tutorial, we suppose that you use an unix account, named

openerp

.Firstly, we have to configure two PostgreSQL servers, the master and the slave.

2.1.2 Streaming Replication

Here is the directory structure for the tutorial

root@vm:/# tree homehome|-> openerp|-> postgresql|-> master|-> standbymkdir /home/openerp/postgresql

Master

Via this command we initialize a new PostgreSQL cluster.

cd/home/openerp/postgresql/usr/lib/postgresql/9.1/bin/initdb -D master

The

wal_level

parameter specifies the

hot_standby

mode and the

max_wal_senders

is the number of slaveservers. In this case, the value is one.

cat >> master/postgresql.conf<< _EOF_ > include ’replication.conf’> _EOF_ cat >> master/replication.conf<< _EOF_ > wal_level = ’hot_standby’> max_wal_senders = 1> archive_mode = on> #archive_command = ’cp %p /home/stephane/postgresql/test/archives_xlog/%f’> _EOF_

We start the new PostgreSQL cluster

/usr/lib/postgresql/9.1/bin/pg_ctl -D master start

Authentication

We will use the replication via the network, in this case, we have to configure the PostgreSQL server to use a dedicateduser for the replication. In our case, this is the openerp user. It’s a normal postgresql user, don’t forget to set all therights for this user and a password.

createuser openerppsql -d postgres -c"ALTER USER openerp PASSWORD ’secret’;"

Note:

Here is a part of the content of the

master/pg_hba.conf

file

# The replication database is a virtual database used by the replication processhost replication openerp 127.0.0.1/32 md5

# Don’t forget to restart the master server before the slave because without that, the slave can’t b

/usr/lib/postgresql/9.1/bin/pg_ctl -D master restart

Slave

Tocreateabackupofthemasterfortheslave, youcanusethe

pg_basebackup

commandprovidedwithPostgreSQL9.1.

cd/home/openerp/postgresql/usr/lib/postgresql/9.1/bin/pg_ctl/pg_basebackup -D standby -v -P -Fp -l backup -h 127.0.0.1 -U open

We configure the standby server to listen to the port 5433 (because we are on the same physical server). If the standbyserver is another server, don’t forget to use 5432.

cat > standby/replication.conf<< _EOF_ > port = 5433> hot_standby = on> _EOF_

The

primary_conninfo

is used by the Streaming Replication, the parameter have the hostname of the master withthe port and the pair user/password.

 

cat > standby/recovery.conf<< _EOF_ > standby_mode = ’on’> primary_conninfo = ’host=127.0.0.1 port=5432 user=openerp password=secret’> trigger_file = ’/tmp/standby’> _EOF_

In this config file, the trigger_file key will be used by the server, if there is a touch on this file, the standby server willautomatically pass in the master mode with the read/write accesses.

2.2 PG-Pool II

For the load-balancing and the failover features, we will use PgPool2.

2.2.1 Installation

# apt-get install pgpool2# apt-get install postgresql-9.1-pgpool2

2.2.2 Configuration

Here is the basic configuration for the load-balancing and the failover.The

failover_command

is important because if pgpool can’t make a connection to the master, it will

touch/tmp/standby

file and this file will be triggered by the standby server.If you want to use this feature with a remote standby server, you can use

ssh

to touch a file on a remote server. Butdon’t forget to change the config file of the standby server and set the right value for the

trigger_file

parameter.

cat >> /etc/pgpool2/pgpool.conf << _EOF_ > port = 5434> load_balance_mode = on> backend_hostname0 = ’localhost’> backend_port0=5432> backend_weight0=1> backend_flag0 = ’ALLOW_TO_FAILOVER’> backend_hostname1 = ’localhost’> backend_port1=5433> backend_weight0=1> backend_flag1 = ’ALLOW_TO_FAILOVER’> failover_command = ’touch /tmp/standby’> _EOF_

CHAPTER ONE LOAD-BALANCING的更多相关文章

  1. NGINX Load Balancing – TCP and UDP Load Balancer

    This chapter describes how to use NGINX Plus and open source NGINX to proxy and load balance TCP and ...

  2. NGINX Load Balancing - HTTP Load Balancer

    This chapter describes how to use NGINX and NGINX Plus as a load balancer. Overview Load balancing a ...

  3. 【架构】How To Use HAProxy to Set Up MySQL Load Balancing

    How To Use HAProxy to Set Up MySQL Load Balancing Dec  2, 2013 MySQL, Scaling, Server Optimization U ...

  4. CF# Educational Codeforces Round 3 C. Load Balancing

    C. Load Balancing time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...

  5. Codeforces Educational Codeforces Round 3 C. Load Balancing 贪心

    C. Load Balancing 题目连接: http://www.codeforces.com/contest/609/problem/C Description In the school co ...

  6. UVA 12904 Load Balancing 暴力

    Load Balancing Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/vi ...

  7. Load Balancing 折半枚举大法好啊

    Load Balancing 给出每个学生的学分.   将学生按学分分成四组,使得sigma (sumi-n/4)最小.         算法:   折半枚举 #include <iostrea ...

  8. [zz] pgpool-II load balancing from FAQ

    It seems my pgpool-II does not do load balancing. Why? First of all, pgpool-II' load balancing is &q ...

  9. How Network Load Balancing Technology Works--reference

    http://technet.microsoft.com/en-us/library/cc756878(v=ws.10).aspx In this section Network Load Balan ...

  10. Network Load Balancing Technical Overview--reference

    http://technet.microsoft.com/en-us/library/bb742455.aspx Abstract Network Load Balancing, a clusteri ...

随机推荐

  1. pipreqs------查找python项目依赖并生成requirements.txt

    项目开发的时候,总是要搭建和部署环境,这时,就需要一个python第三方包的list,一般叫做requirements.txt.如果项目使用virtualenv环境,直接使用pip freeze即可, ...

  2. 杀掉TOMCAT并重启的脚本

    /usr/local/tomcat7/bin/shutdown.sh sleep #具体时间就看你得webapp在调用shutdown.sh后多久后处于僵死状态 ps -ef | grep sleep ...

  3. GO语言的数据结构测试

    用于docker了,go也慢慢看一些.. 推荐书籍<go语言实践>就是<Go in Action>的中文版,有文字版PDF的. package main import ( &q ...

  4. ubantu16.04服务器错误提示没有安装php_fileinfo扩展

    如果你是安装的LNMP1.3full一键安装包,安装的是php5.6.22,你会遇到这个错误,解决方法也不难,请看如下: 不需要去下载扩展,只需要进入此fileinfo目录(我这里有多个版本5.6,7 ...

  5. mysql 文本搜索

    全文本搜索 MySQL支持几种基本的数据库引擎,但并非所有的引擎都支持全文本搜索.两个最常使用的引擎为MyISAM和InnoDB,前者支持全文本搜索,后者就不支持. 理解全文本搜索 在前面的学习中,我 ...

  6. 拓扑排序(Topological Order)UVa10305 Ordering Tasks

    2016/5/19 17:39:07 拓扑排序,是对有向无环图(Directed Acylic Graph , DAG )进行的一种操作,这种操作是将DAG中的所有顶点排成一个线性序列,使得图中的任意 ...

  7. Android学习--探究服务(二)

    服务的基本用法 定义服务: 我们需要先创建服务,我们要使用就的利用一个类去继承它,然后重写它的几个方法,具体的我们看下面的代码: 我们重写了下面三个方法: * onCreate()           ...

  8. 洛谷——P1134 阶乘问题

    P1134 阶乘问题 题目描述 也许你早就知道阶乘的含义,N阶乘是由1到N相乘而产生,如: 12! = 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9 x 10 x 11 x 12 ...

  9. 【枚举】URAL - 2081 - Faulty dial

    //._. ... ._. ._. ... ._. ._. ._. ._. ._. //|.| ..| ._| ._| |_| |_. |_. ..| |_| |_| //|_| ..| |_. ._ ...

  10. 在C#中快速查询文件

    相信使用过Everything的人都对其超快的搜索速度印象非常深刻,它的主要原理是通过扫描NTFS磁盘的USN Journal读取的文件列表,而不是磁盘目录,由于USN Journal非常小,因此能实 ...