zabbix高可用搭建--数据库集群(2)

一、数据mariadb集群搭建分为两个内容

1、负载均衡搭建

2、mariadb galera cluster

二、负载均衡搭建

负载均衡集群是 load balance 集群的简写,翻译成中文就是负载均衡集群。常用的负载均衡开源软件有nginx、lvs、haproxy,商业的硬件负载均衡设备F5、Netscale。这里主要是学习 LVS 并对其进行了详细的总结记录。本次采用lvs的DR模式

2.1 安装keepalive和lvs安装包

yum install -y ##### keepalived 安装keepalive

yum install -y ipvsadm ##### 安装装lvs

2.2、编辑keepalive的配置,keepalive与网络的vrrp原理一样

vi /etc/keepalive/keepalived.conf

vrrp_instance VI_1 {

state MASTER

! nopreempt

interface chkconfig keepalived on

garp_master_delay 10

virtual_router_id 50

priority 100

advert_int 1

authentication {

auth_type PASS

auth_pass zabbix

}

virtual_ipaddress {

192.168.1.157

}

}

virtual_server 192.168.1.157 3306 {

delay_loop 6

lb_algo wrr

lb_kind DR

nat_mask 255.255.255.0

persistence_timeout 50

protocol TCP

real_server192.168.1.1543306{weight1TCP_CHECK {connect_port3306connect_timeout3nb_get_retry3delay_before_retry3}}real_server192.168.1.1553306{weight1TCP_CHECK {connect_port3306connect_timeout3nb_get_retry3delay_before_retry3}}

real_server 192.168.1 3306 {

weight 1

TCP_CHECK {

connect_port 3306

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

}

}

}

2.3.开启keepalive、ipvsam服务

systemctl start keepalived

systemctl start ipvsam

2.4、验证

ipvsam 查看负载情况

三、mariadb 集群

3.1 数据库安装 

分别在三台主机安装mariadb的数据,本次安装10.3.14版本的数据,较为稳定的版本

vi /etc/yum.repos.d/MariaDB.repo

[mariadb]

name = MariaDB-10.3.14

baseurl=http://yum.mariadb.org/10.3.14/centos7-amd64

alternative: baseurl=http://archive.mariadb.org/mariadb-10.3.14/yum/centos7-amd64

gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB

gpgcheck=1

[root@localhost /]# yum install mariadb-server -y

Loaded plugins: langpacks, product-id, subscription-manager

Complete!

[root@localhost /]# rpm -qa | grep mariadb

mariadb-server-5.5.50-1.el7_2.x86_64

mariadb-libs-5.5.50-1.el7_2.x86_64

mariadb-5.5.50-1.el7_2.x86_64

mariadb-devel-5.5.50-1.el7_2.x86_64

启动mariadb服务程序并添加到开机启动项中:

[root@localhost /]# systemctl start mariadb

[root@localhost /]# systemctl enable mariadb

[root@localhost /]# netstat -anpt | grep 3306

tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 22418/mysqld

[root@localhost /]# ps -ef | grep mariadb

mysql 22418 22259 0 00:39 ? 00:00:00 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log/mariadb/mariadb.log --pid-file=/var/run/mariadb/mariadb.pid --socket=/var/lib/mysql/mysql.sock

root 22459 1092 0 00:40 pts/0 00:00:00 grep --color=auto mariadb

[root@localhost /]# ln -s '/usr/lib/systemd/system/mariadb.service' '/etc/systemd/system/multi-user.target.wants/mariadb.service'

为了保证数据库的安全性,一定要进行初始化工作:

第1步:设定root用户密码。

第2步:删除匿名帐号。

第3步:禁止root用户从远程登陆。

第4步:删除test数据库并取消对其的访问权限。

第5步:刷新授权表,让初始化后的设定立即生效。

初始化数据库服务程序:

[root@localhost /]# mysql_secure_installation

/usr/bin/mysql_secure_installation: line 379: find_mysql_client: command not found

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB

SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current

password for the root user. If you've just installed MariaDB, and

you haven't set the root password yet, the password will be blank,

so you should just press enter here.

Enter current password for root (enter for none): 当前数据库密码为空,直接敲击回车。

OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB

root user without the proper authorisation.

Set root password? [Y/n] y

New password: 输入要为root用户设置的数据库密码。

Re-enter new password: 重复再输入一次密码。

Password updated successfully!

Reloading privilege tables..

... Success!

By default, a MariaDB installation has an anonymous user, allowing anyone

to log into MariaDB without having to have a user account created for

them. This is intended only for testing, and to make the installation

go a bit smoother. You should remove them before moving into a

production environment.

Remove anonymous users? [Y/n] y(删除匿名帐号)

... Success!

Normally, root should only be allowed to connect from 'localhost'. This

ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y(禁止root用户从远程登陆)

... Success!

By default, MariaDB comes with a database named 'test' that anyone can

access. This is also intended only for testing, and should be removed

before moving into a production environment.

Remove test database and access to it? [Y/n] y(删除test数据库并取消对其的访问权限)

Dropping test database...

... Success!

Removing privileges on test database...

... Success!

Reloading the privilege tables will ensure that all changes made so far

will take effect immediately.

Reload privilege tables now? [Y/n] y(刷新授权表,让初始化后的设定立即生效)

... Success!

Cleaning up...

All done! If you've completed all of the above steps, your MariaDB

installation should now be secure.

Thanks for using MariaDB!

使用root用户登陆到数据库中:

[root@localhost /]# mysql -u root -p

Enter password: 此处输入root用户在数据库中的密码。

Welcome to the MariaDB monitor. Commands end with ; or \g.

Your MariaDB connection id is 5

Server version: 5.5.35-MariaDB MariaDB Server

Copyright (c) 2000, 2013, Oracle, Monty Program Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

查看当前已有的数据库:

MariaDB [(none)]> show databases;

+--------------------+

| Database |

+--------------------+

| information_schema |

| mysql |

| performance_schema |

+--------------------+

3 rows in set (0.01 sec)

3.2 配置集群

vi /etc/my.conf

[mysqld]

binlog_format=ROW

default-storage-engine=innodb

innodb_autoinc_lock_mode=2

bind-address=0.0.0.0

Galera Provider Configuration

wsrep_on=ON

wsrep_provider=/usr/lib64/galera/libgalera_smm.so

Galera Cluster Configuration

wsrep_cluster_name="galera_cluster"

wsrep_cluster_address="gcomm://192.168.1.192.168.1.155,192.168.1.156,"

Galera Synchronization Configuration

wsrep_sst_method=rsync

Galera Node Configuration

wsrep_node_address="192.168.1.156" #####其他节点需要修改

wsrep_node_name="Node1" #####其他节点需要修改

第1个节点先启动 使用galera_new_cluster

其他节点使用 systemctl start mariadb

3.4 安装zabbix-server-mysql

为了将zabbix的数据文件导入mysql中

mysql -uroot -p

password

mysql> create database zabbix character set utf8 collate utf8_bin;

mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'password';

mysql> quit;

导入初始架构和数据,系统将提示您输入新创建的密码。

zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix

五、配置vip

因为负载均衡lvs的DR原理,每台数据库都必须配置vip地址,并不对外进行广播

#!/bin/bash

#description:start realserver

vip1=192.168.1.157

case $1 in

start)

echo "Start Realserver"

/sbin/ifconfig lo:0 $vip1 broadcast $vip1 netmask 255.255.255.255 up

echo"1">/proc/sys/net/ipv4/conf/lo/arp_ignore    echo"2">/proc/sys/net/ipv4/conf/lo/arp_announce    echo"1">/proc/sys/net/ipv4/conf/all/arp_ignore    echo"2">/proc/sys/net/ipv4/conf/all/arp_announce

;;

stop)

echo "Stop Realserver"

/sbin/ifconfig lo:0 down

echo "0" > /proc/sys/net/ipv4/conf/lo/arp_ignore

echo "0" > /proc/sys/net/ipv4/conf/lo/arp_announce

echo "0" > /proc/sys/net/ipv4/conf/all/arp_ignore

echo "0" > /proc/sys/net/ipv4/conf/all/arp_announce

;;

*)

echo "Usage: $0 (start | stop)"

exit 1

esac

最后运行shell脚本

常见故障

搭建galera cluster的时候设置sst为xtrabackup,启动node1报错。

[ERROR] WSREP: It may not be safe to bootstrap the cluster from this node. It was not the last one to leave the cluster and may not contain all the updates. To force cluster bootstrap with this node, edit the grastate.dat file manually and set safe_to_bootstrap to 1 .

解决方式:

grastate.dat file of the node you intend to use as the first node.

需要把该文件删除 重新启动即可。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,482评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,377评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,762评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,273评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,289评论 5 373
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,046评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,351评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,988评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,476评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,948评论 2 324
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,064评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,712评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,261评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,264评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,486评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,511评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,802评论 2 345

推荐阅读更多精彩内容