Skip to content

Multi node Zabbix Proxy setup

Werner Dijkerman edited this page Mar 5, 2016 · 1 revision

Multi node Zabbix Proxy

Introduction

This page will describe how to setup an multinode Zabbix Proxy with the wdijkerman-zabbix puppet module. Before you continue, you’ll need to know which database you want to use.

Configuring the site manifest

We will discuss 2 setups which are supported with the wdijkerman-zabbix puppet module. This is using the following backends:

  • PostgreSQL

  • MySQL

Zabbix can also use other backends like Oracle Database, as I don’t have the ability to create/maintain Oracle databases this is something I can’t support now. If you do have examples which shows how to setup an multi node setup for Zabbix Server with an Oracle Database as backend, please let me know. We can update this document so other can use it too.

In the next paragraph each earlier mentioned database will be explained. Examples will be given for an 2 node setup and an 3 node setup.

PostgreSQL

The following configuration can be used when PostgreSQL is the preferred database.

node 'server11.example.com' {
# My ip: 192.168.30.11
  class { 'postgresql::client': }
  class { 'zabbix::proxy':
    zabbix_server_host => '192.168.30.11',
    manage_database    => false,
    database_host      => 'server12.example.com',
    database_type      => 'postgresql',
  }
}
node 'server12.example.com' {
# My ip: 192.168.30.12
  class { 'postgresql::server':
      listen_addresses => '192.168.30.12'
    }
  class { 'zabbix::database':
    database_type     => 'postgresql',
    zabbix_type       => 'proxy',
    zabbix_proxy_ip   => '192.168.30.11',
    database_name     => 'zabbix-proxy',
    database_user     => 'zabbix-proxy',
    database_password => 'zabbix-proxy',
  }
}
server11.example.com
This is the server running the Zabbix Proxy. It needs to have the postgres client software installed, to connect to the database.
server12.example.com
This is the host running the PostgreSQL database. The `zabbix::database` will configure the database and will create the Zabbix database user. We have to tell the database on which nodes the other components are running: Users will be created which can only login from these hosts. We have to add the database_name, database_user and database_password parameters, as these are default set to 'zabbix-server'.

MySQL

The following configuration can be used when MySQL is the preferred database.

node 'server11.example.com' {
# My ip: 192.168.30.11
  class { 'mysql::client': }
  class { 'zabbix::proxy':
    zabbix_server_host => '192.168.30.11',
    manage_database    => false,
    database_host      => 'server12.example.com',
    database_type      => 'mysql',
  }
}
node 'server12.example.com' {
# My ip: 192.168.30.12
    class { 'mysql::server':
      override_options => {
        'mysqld'       => {
          'bind_address' => '192.168.30.12',
        },
      },
    }
  class { 'zabbix::database':
    database_type     => 'mysql',
    zabbix_type       => 'proxy',
    zabbix_proxy      => 'server11.example.com',
    database_name     => 'zabbix-proxy',
    database_user     => 'zabbix-proxy',
    database_password => 'zabbix-proxy',
  }
}
server11.example.com
This is the server running the Zabbix Proxy. It needs to have the postgres client software installed, to connect to the database.
server12.example.com
This is the host running the MySQL database. The `zabbix::database` will configure the database and will create the Zabbix database user. We have to tell the database on which nodes the other components are running: Users will be created which can only login from these hosts. We have to add the database_name, database_user and database_password parameters, as these are default set to 'zabbix-server'.

sqlite

There is no possible way to use an multinode setup with the sqlite database.