• CHAPTER ONE LOAD-BALANCING


    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_

  • 相关阅读:
    Oracle对表解锁
    写txt文件在AIX5.3系统中乱码
    Spring Data JPA初使用
    简单流水号生成
    Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COER
    install Tcl8.5.10
    centOS下开机自启动apache、mysql、samba、svn等服务的最简单方法
    UNIX_SOCKET 进程间通信
    Linux(CentOS 5.5) Redis 安装及RedisPHP拓展安装应用
    python 返回 字典型结果集
  • 原文地址:https://www.cnblogs.com/chjbbs/p/4425299.html
Copyright © 2020-2023  润新知