Installing high availability Odoo 11 on ubuntu 16.04

You must be aware that now odoo has released version 11 officially. To know odoo 11 features click here

In this tutorial I’ll explain you how to install high availability odoo version 11(Community version) on ubuntu 16.04

Note : There is no major difference for installing odoo community and odoo enterprise version.

Overall System Architecture

 

If python is already installed, make sure you have installed python version 3.5 or above. Previous versions of python are not compatible with odoo 11.

Installation Guide

In this tutorial, I assume that you have properly configured your network for the required servers and you have basic networking knowledge to replace/change ip addresses mentioned throughout this tutorial with the appropriate ip addresses.

Database Server(s) Installation

Step 1 : Installation

Before you proceed for the installation, make sure you have configured locale settings properly.

sudo apt-get -y install postgresql postgresql-contrib

Step 2 : Create user with password

sudo -u postgres createuser odoo11
sudo -u postgres psql
psql=# alter user odoo11 with encrypted password '<password>';

 

Step 3 : Allow remote connection from application servers

All below lines in /etc/postgresql/9.5/main/pg_hba.conf file on top

host all odoo8 192.168.1.51/32 trust
host all odoo8 192.168.1.52/32 trust
host all odoo8 192.168.1.53/32 trust
host all odoo8 192.168.1.54/32 trust

Restart postgresql service

systemctl restart postgresql

Application Server(s) Installation

Follow mentioned steps on each of the application server(s) to install odoo application only. For simplicity I will be using the debian package to install the odoo server, you can also follow the manual installation process from other tutorials.

Step 1 : Download latest version

http://nightly.odoo.com/11.0/nightly/deb/odoo_11.0.latest_all.deb

Step 2 : Install odoo

Before you proceed for this command make sure that your locale is setup properly if you are using VPS.

dpkg -i odoo_11.0.latest_all.deb

If you encounter the blow error during the installation

# dpkg -i odoo_11.0.latest_all.deb 
Selecting previously unselected package odoo.
(Reading database ... 26866 files and directories currently installed.)
Preparing to unpack odoo_11.0.latest_all.deb ...
Unpacking odoo (11.0.20171114) ...
dpkg: dependency problems prevent configuration of odoo:
 odoo depends on python3-babel; however:
 Package python3-babel is not installed.
 odoo depends on python3-dateutil; however:
 Package python3-dateutil is not installed.
 odoo depends on python3-decorator; however:
 Package python3-decorator is not installed.
 odoo depends on python3-docutils; however:
 Package python3-docutils is not installed.
 odoo depends on python3-feedparser; however:
 Package python3-feedparser is not installed.
 odoo depends on python3-gevent; however:
 Package python3-gevent is not installed.
 odoo depends on python3-html2text; however:
 Package python3-html2text is not installed.
 odoo depends on python3-jinja2; however:
 Package python3-jinja2 is not installed.
 odoo depends on python3-lxml; however:
 Package python3-lxml is not installed.
 odoo depends on python3-mako; however:
 Package python3-mako is not installed.
 odoo depends on python3-mock; however:
 Package python3-mock is not installed.
 odoo depends on python
dpkg: error processing package odoo (--install):
 dependency problems - leaving unconfigured
Processing triggers for systemd (229-4ubuntu12) ...
Errors were encountered while processing:
 odoo

You can run,

apt-get install -f

This command will installed all the dependency libraries on the system.

Note : Debian package installer by default install postgresql as dependent package, we can stop the postgresql service and remove service from the system startup service list.

sudo systemctl stop postgresql
sudo update-rc.d postgresql disable

Step 3 : Database configurations

Let’s help application server to find the database from the configuration file. (/etc/odoo/openerp-server.conf)

db_host = 192.168.1.61
db_port = 5432
db_user = odoo11
db_password = xxxx

Note : Don’t forgot to replace your database name and database password with appropriate values.

Step 4 : Custom Modules

To install the custom modules on all application server, you need to configure NFS to share the directory which can be accessible from all the application and which should be mounted automatically on system startup.

After successful configuration of NFS on all application server you can add mount path in addons_path param(can be found on odoo configuration file)

Load Balancer Installation

Step 1 : Install nginx

sudo apt-get install nginx

Step 2 : Nginx site configuration

Create a configuration file under /etc/nginx/sites-enabled/xyz.com.conf with below content. Don’t forgot to change the domain name and SSL certificate path.

upstream backend  {
       server 192.168.1.51:8069;
       server 192.168.1.52:8069;
       server 192.168.1.53:8069;
       server 192.168.1.54:8069;
}

upstream backend-longpolling {
server 192.168.1.51:8072;
server 192.168.1.52:8072;
server 192.168.1.53:8072;
server 192.168.1.54:8072;
}

server {
   server_name xyz.com www.xyz.com;

   location / {
       return 301 https://$server_name$request_uri;
    }
}




server {
listen          443 ssl;

server_name xyz.com www.xyz.com;
proxy_connect_timeout       60000;
proxy_send_timeout          60000;
proxy_read_timeout          60000;
send_timeout                60000;

ssl_dhparam /etc/ssl/certs/dhparam.pem;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_intercept_errors on;

location /longpolling {
     proxy_pass http://backend-longpolling;
}

location / {
          proxy_pass http://backend;
}

ssl_certificate /etc/nginx/ssl/www_xyz_com.crt; 
ssl_certificate_key /etc/nginx/ssl/www_xyz_com.key;
}

Step 3 : Restart nginx service

systemctl restart nginx.service

Step 4 : Access odoo application from the browser.

Navigate from your public ip address if port 80 and 443 are already forwarded from the firewall.

Leave a Reply

Your email address will not be published. Required fields are marked *