zoukankan      html  css  js  c++  java
  • 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_

  • 相关阅读:
    【BZOJ】2453: 维护队列【BZOJ】2120: 数颜色 二分+分块(暴力能A)
    【转】使用json-lib进行Java和JSON之间的转换
    【转】MySQL索引和查询优化
    【转】SQL常用的语句和函数
    【转】MySQL日期时间函数大全
    VMare中安装“功能增强工具”,实现CentOS5.5与win7host共享文件夹的创建
    MyEclipse中消除frame引起的“the file XXX can not be found.Please check the location and try again.”的错误
    由于SSH配置文件的不匹配,导致的Permission denied (publickey)及其解决方法。
    复选框的多选获取值
    echart环形图制作及出现的一些问题总结
  • 原文地址:https://www.cnblogs.com/chjbbs/p/4425299.html
Copyright © 2011-2022 走看看