您的当前位置:首页正文

miradb+galera+haproxy

2023-11-10 来源:画鸵萌宠网

#

[galera]

wsrep_on=ON

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

wsrep_cluster_address=‘gcomm://192.168.8.59,192.168.8.140‘

wsrep_cluster_name=‘galera‘

wsrep_node_address=‘192.168.8.140‘

wsrep_node_name=‘node1‘

wsrep_sst_method=rsync

binlog_format=row

default_storage_engine=InnoDB

innodb_autoinc_lock_mode=2

bind-address=0.0.0.0

wsrep_sst_auth=root:root

4、启动服务,查看端口

[root@node1 ~]# lsof -i:4567

COMMAND   PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME

mysqld  22162 mysql   11u  IPv4  44908      0t0  TCP *:tram (LISTEN)

mysqld  22162 mysql   13u  IPv4  44911      0t0  TCP 192.168.8.140:35922->192.168.8.59:tram (ESTABLISHED)

[root@node1 ~]# lsof -i:3306

COMMAND   PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME

mysqld  22162 mysql   32u  IPv4  45258      0t0  TCP *:mysql (LISTEN)

可以看到多一个4567的端口

5、查看状态

[root@node2 ~]# mysql -u root -p -e "show status like ‘wsrep%‘"

Enter password: 

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

| Variable_name                | Value                                |

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

| wsrep_apply_oooe             | 0.000000                             |

| wsrep_apply_oool             | 0.000000                             |

| wsrep_apply_window           | 0.000000                             |

| wsrep_causal_reads           | 0                                    |

| wsrep_cert_deps_distance     | 0.000000                             |

| wsrep_cert_index_size        | 0                                    |

| wsrep_cert_interval          | 0.000000                             |

| wsrep_cluster_conf_id        | 2                                    |

| wsrep_cluster_size           | 2                                    |

| wsrep_cluster_state_uuid     | a857719c-2667-11e6-8e3f-aa2deb9d92a9 |

| wsrep_cluster_status         | Primary                              |

| wsrep_commit_oooe            | 0.000000                             |

| wsrep_commit_oool            | 0.000000                             |

| wsrep_commit_window          | 0.000000                             |

| wsrep_connected              | ON                                   |

| wsrep_evs_delayed            |                                      |

| wsrep_evs_evict_list         |                                      |

| wsrep_evs_repl_latency       | 0/0/0/0/0                            |

| wsrep_evs_state              | OPERATIONAL                          |

| wsrep_flow_control_paused    | 0.000000                             |

| wsrep_flow_control_paused_ns | 0                                    |

| wsrep_flow_control_recv      | 0                                    |

| wsrep_flow_control_sent      | 0                                    |

| wsrep_gcomm_uuid             | 5c7c83d5-2672-11e6-a40c-4ac0f0858b55 |

| wsrep_incoming_addresses     | 192.168.8.59:3306,192.168.8.140:3306 |

| wsrep_last_committed         | 11                                   |

| wsrep_local_bf_aborts        | 0                                    |

| wsrep_local_cached_downto    | 18446744073709551615                 |

| wsrep_local_cert_failures    | 0                                    |

| wsrep_local_commits          | 0                                    |

| wsrep_local_index            | 0                                    |

| wsrep_local_recv_queue       | 0                                    |

| wsrep_local_recv_queue_avg   | 0.166667                             |

| wsrep_local_recv_queue_max   | 2                                    |

| wsrep_local_recv_queue_min   | 0                                    |

| wsrep_local_replays          | 0                                    |

| wsrep_local_send_queue       | 0                                    |

| wsrep_local_send_queue_avg   | 0.000000                             |

| wsrep_local_send_queue_max   | 1                                    |

| wsrep_local_send_queue_min   | 0                                    |

| wsrep_local_state            | 4                                    |

| wsrep_local_state_comment    | Synced                               |

| wsrep_local_state_uuid       | a857719c-2667-11e6-8e3f-aa2deb9d92a9 |

| wsrep_protocol_version       | 7                                    |

| wsrep_provider_name          | Galera                               |

| wsrep_provider_vendor        | Codership Oy <info@codership.com>    |

| wsrep_provider_version       | 25.3.15(r3578)                       |

| wsrep_ready                  | ON                                   |

| wsrep_received               | 6                                    |

| wsrep_received_bytes         | 477                                  |

| wsrep_repl_data_bytes        | 0                                    |

| wsrep_repl_keys              | 0                                    |

| wsrep_repl_keys_bytes        | 0                                    |

| wsrep_repl_other_bytes       | 0                                    |

| wsrep_replicated             | 0                                    |

| wsrep_replicated_bytes       | 0                                    |

| wsrep_thread_count           | 2                                    |

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

看状态时主要查看:

wsrep_cluster_size            2  #number of nodeswsrep_connected              ONwsrep_ready                    ON   #It‘s running,awesome !wsrep_incoming_addresses     | 此时是连接的状态

可以看到状态为正常

测试!

在node1上创建数据库erick

MariaDB [(none)]> create database erick;

ERROR 2006 (HY000): MySQL server has gone away

No connection. Trying to reconnect...

Connection id:    16

Current database: *** NONE ***

Query OK, 1 row affected (0.06 sec)

MariaDB [(none)]> show databases;

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

| Database           |

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

| erick              |

| information_schema |

| mysql              |

| performance_schema |

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

4 rows in set (0.00 sec)

在node2上查看,并且删除

MariaDB [(none)]> show databases;

ERROR 2006 (HY000): MySQL server has gone away

No connection. Trying to reconnect...

Connection id:    4

Current database: *** NONE ***

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

| Database           |

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

| erick              |

| information_schema |

| mysql              |

| performance_schema |

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

4 rows in set (0.00 sec)

MariaDB [(none)]> 

MariaDB [(none)]> drop database erick;

Query OK, 0 rows affected (0.14 sec)

MariaDB [(none)]> 

在node1上查看数据库是否被删除

MariaDB [(none)]> show databases;

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

| Database           |

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

| information_schema |

| mysql              |

| performance_schema |

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

3 rows in set (0.00 sec)

MariaDB [(none)]> 

至此实验完成!

参考出处:

http://tunnelix.com/mariadb-galera-cluster-installation/

https://geekdudes.wordpress.com/2015/07/18/setting-up-failover-cluster-for-mariadb-on-centos-7/

################################3

在此添加一台haproxy服务器做负载均衡,机器为centos6.5

hostname    ip  

erick1     192.168.8.163

haproxy安装过程略。修改配置文件

[root@erick1 ~]# cat  /etc/haproxy/haproxy.cfg

global

        log 127.0.0.1 local0 notice

        maxconn 65536

        nbproc 10

        ulimit-n 231097

        tune.ssl.default-dh-param 1024

        daemon

defaults

        log     global

        mode    http

        option  httplog

        option  dontlognull

        option  forwardfor

        retries 3

        option redispatch

        maxconn 65535

        timeout connect 5s

        timeout client 5m

        timeout server 5m

        timeout check   1s

        timeout http-request    10s

        timeout http-keep-alive 10s

listen Stats *:8080

  mode http

  stats enable

  stats uri /

  stats refresh 15s

  stats show-node

  stats show-legends

  stats hide-version

listen  Mysqld  192.168.8.163:3306

        #cookie SERVERID rewrite

        mode tcp 

        maxconn 200

        balance roundrobin

        #option mysql-check user erick

        server  node1 192.168.8.140:3306  check port 3306

        server  node2 192.168.8.59:3306  check port 3306

这时可以在web上监控状态

技术分享

可以看到msyql的状态,即使当断开一台msyql服务器时也不影响工作。

本文出自 “完美世界!” 博客,请务必保留此出处http://shyln.blog.51cto.com/6890594/1784438

miradb+galera+haproxy

标签:防火墙   server   虚拟机   操作系统   数据库服务   

小编还为您整理了以下内容,可能对您也有帮助:

haproxy+keepalived怎样查看他的虚拟ip

1点击电脑左下角圆形的图标“开始”,然后在打开菜单中选择“运行”

2 点击“运行”后,就打开运行对话框,在运行对话框的的输入框中输入cmd,之后点下面的“确定”按钮,打开cmd命令提示符

3在打开的cmd命令提示符中输入下面的命令就可以查看自己的ip地址了
ipconfig /all

方法二

下面这种方式原理和xp系统类型,但是明显操作比xp系统麻烦

点击电脑右下角的表示“网络连接”的图标,之后会打开连接信息对话框,选择“打开网络和共享中心”

在打开的 “打开网络和共享中心”页面中,选择“本地连接”,

在打开的“本地连接 状态”对话框中点击“详细信息”按钮
之后会打开“网络连接详细信息”对话框,在这里我们可以看到除了ip地址之外的更多信息,

haproxy+keepalived怎样查看他的虚拟ip

1点击电脑左下角圆形的图标“开始”,然后在打开菜单中选择“运行”

2 点击“运行”后,就打开运行对话框,在运行对话框的的输入框中输入cmd,之后点下面的“确定”按钮,打开cmd命令提示符

3在打开的cmd命令提示符中输入下面的命令就可以查看自己的ip地址了
ipconfig /all

方法二

下面这种方式原理和xp系统类型,但是明显操作比xp系统麻烦

点击电脑右下角的表示“网络连接”的图标,之后会打开连接信息对话框,选择“打开网络和共享中心”

在打开的 “打开网络和共享中心”页面中,选择“本地连接”,

在打开的“本地连接 状态”对话框中点击“详细信息”按钮
之后会打开“网络连接详细信息”对话框,在这里我们可以看到除了ip地址之外的更多信息,

haproxy+keepalived负载均衡之主备切换

VIP: 192.168.1.100

Master: 192.168.1.238

Slave: 192.168.1.239

真实IP:

RIP1: 192.168.1.235

RIP2: 192.168.1.236

以下为安装步骤

第一步:安装haproxy

下载http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.18.tar.gz

#tar zxvf haproxy-1.4.18.tar.gz

#make TARGET=linux26

#make install

第二步:安装ipvs

根据ipvs官网介绍,不同版本内核适用的ipvs版本不一样。http://www.linuxvirtualserver.org/software/ipvs.html

2.6.18 适用于1.24的各个版本

ipvsadm-1.24-6.src.rpm (for kernel between 2.6.10 and 2.6.27.4) - December 10, 2005

ipvsadm-1.24-5.src.rpm (for 1.2.0 or later) - October 27, 2004

ipvsadm-1.24-4.src.rpm (for 1.1.8 or later) - January 10, 2004

ipvsadm-1.24-3.src.rpm (for 1.1.8 or later) - December 20, 2003

ipvsadm-1.24.tar.gz - December 10, 2005

安装之前,软连接系统内核目录

ln -s /usr/src/kernels/2.6.18-194.11.3.el5-i686/ /usr/src/linux

查看系统当前的内核版本:

uname -r

2.6.18-164.el5

有时你找不到这个内核的路径,系统安装后并没有kernerls的目录

解决方法:yum install kernel-devel

接下来在进行连接 编译 就ok了!

我们使用最新的 ipvsadm-1.24.tar.gz,下载安装。

tar zxvf ipvsadm-1.24.tar.gz

cd ipvsadm-1.24

make

make install

第三步,安装keepalived

从http://www.keepalived.org上下载最新的keepalived-1.2.2.tar.gz。

tar zxvf keepalived-1.2.2.tar.gz

cd keepalived-1.2.2

./configure

make

make install

安装完毕。配置

(1):

cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/

cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/

mkdir /etc/keepalived

cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/

ln -s /usr/local/sbin/keepalived /usr/sbin/

service keepalived start

如果安装时的编译参数为: ./configure --prefix=/usr/local/keepalived

则操作步骤如下:

cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/

cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

mkdir /etc/keepalived

cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/

ln -s /usr/local/keepalived/sbin/keepalived /usr/sbin/

service keepalived start

以下为详细的配置文件

二、haproxy

(1)、haproxy配置文件 haproxy.cfg

global

daemon

chroot /usr/local/haproxy

maxconn 256

user haproxy

group haproxy

log-send-hostname xiaokk.com

log-tag my_xiaokk

nbproc 1

pidfile /var/run/haproxy.pid

log 127.0.0.1 local0 info

defaults

maxconn 256

mode http

timeout connect 5000ms

timeout client 50000ms

timeout server 50000ms

timeout check 2000

retries 3

option httpclose

option httplog

option dontlognull

option forwardfor

option redispatch

option abortonclose

frontend http-www

bind 192.168.1.100:80

acl ha_policy hdr_reg(host) -i ^(www.test-haproxy.com|test-haproxy.com|demo.test-haproxy.com|www.hellobaby.com)

acl ha_baby hdr_dom(host) -i hellobaby.com

use_backend ha_www if ha_policy

use_backend ha_www if ha_baby

log 127.0.0.1 local0 info

listen admin_status

bind 192.168.1.100:1080

mode http

log 127.0.0.1 local0 info

stats uri /admin?status

stats refresh 30s

stats realm Haproxy/ Admin/ Center

stats auth admin:admin

stats hide-version

backend ha_www

mode http

balance source

cookie SERVERID

option httpchk HEAD /index.html

server w1 192.168.1.235:80 cookie 1 check inter 1500 rise 3 fall 3 weight 1

server w2 192.168.1.236:85 cookie 1 check inter 1500 rise 3 fall 3 weight 2

(2)、haproxy启却脚本 haproxy.sh

#!/bin/sh

#

# chkconfig: - 85 15

# description: HA-Proxy is a TCP/HTTP reverse proxy which is particularly /

# suited for high availability environments.

#

# processname: haproxy

# config: /usr/local/haproxy/conf/haproxy.cfg

# pidfile: /var/run/haproyx.pid

#

# Source function library.

if [ -f /etc/init.d/functions ]; then

. /etc/init.d/functions

elif [ -f /etc/rc.d/init.d/functions ]; then

. /etc/rc.d/init.d/functions

else

exit 0

fi

# Source networking configuration.

. /etc/sysconfig/network

# Check that networking is up

[ ${NETWORKING} = "no" ] exit 0

[ -f /usr/local/haproxy/conf/haproxy.cfg ] || exit 1

RETVAL=0

# start Haproxy

start() {

/usr/local/haproxy/sbin/haproxy -c -q -f /usr/local/haproxy/conf/haproxy.cfg

if [ $? -ne 0 ]; then

echo "Errors found in configuration file."

return 1

fi

echo -n "Starting Haproxy: "

daemon /usr/local/haproxy/sbin/haproxy -D -f /usr/local/haproxy/conf/haproxy.cfg -p /var/run/haproxy.pid

RETVAL=$?

echo

[ $RETVAL -eq 0 ] touch /var/lock/subsys/haproxy

return $RETVAL

}

# stop Haproxy

stop() {

echo -n "Shutting down Haproxy: "

killproc haproxy -USR1

RETVAL=$?

echo

[ $RETVAL -eq 0 ] rm -f /var/lock/subsys/haproxy

[ $RETVAL -eq 0 ] rm -f /var/run/haproxy.pid

return $RETVAL

}

# restart Haproxy

restart() {

/usr/local/haproxy/sbin/haproxy -c -q -f /usr/local/haproxy/conf/haproxy.cfg

if [ $? -ne 0 ]; then

echo "ERR found in configuration file, check it with 'haproxy check'."

return 1

fi

stop

start

}

# check haproxy

check() {

/usr/local/haproxy/sbin/haproxy -c -q -V -f /usr/local/haproxy/conf/haproxy.cfg

}

# rsstatus

rhstatus() {

status haproxy

}

# condrestart

condrestart() {

[ -e /var/lock/subsys/haproxy ] restart || :

}

# See how we were called.

case "$1" in

start)

start

;;

stop)

stop

;;

restart)

restart

;;

reload)

restart

;;

condrestart)

condrestart

;;

status)

rhstatus

;;

check)

check

;;

*)

echo $"Usage: haproxy {start|stop|restart|reload|condrestart|status|check}"

RETVAL

esac

exit $RETVAL

三、keepalived配置文件

Master的配置文件:

! Configuration File for keepalived

global_defs {

router_id LVS_1

}

vrrp_script chk_haproxy {

script "/etc/keepalived/check_haproxy.sh"

interval 2

weight 2

}

vrrp_instance VI_1 {

state MASTER

priority 99

advert_int 1

virtual_router_id 50

garp_master_delay 1

interface eth0

authentication {

auth_type PASS

auth_pass Kxiaokk345Pix

}

track_interface {

eth0

}

virtual_ipaddress {

192.168.1.100

}

track_script {

chk_haproxy

}

notify_master "/etc/keepalived/mailnotify.py master"

notify_backup "/etc/keepalived/mailnotify.py backup"

notify_fault "/etc/keepalived/mailnotify.py fault"

}

Slave的配置文件

! Configuration File for keepalived

global_defs {

router_id LVS_2

}

vrrp_script chk_haproxy {

script "/etc/keepalived/check_haproxy.sh"

interval 5

weight 2

}

vrrp_instance VI_1 {

state BACKUP

priority 96

advert_int 1

virtual_router_id 50

garp_master_delay 1

interface eth0

authentication {

auth_type PASS

auth_pass Kxiaokk345Pix

}

track_interface {

eth0

}

virtual_ipaddress {

192.168.1.100

}

track_script {

chk_haproxy

}

notify_master "/etc/keepalived/mailnotify.py master"

notify_backup "/etc/keepalived/mailnotify.py backup"

notify_fault "/etc/keepalived/mailnotify.py fault"

}

###### --- haproxy存活状态检测脚本

#!/bin/bash

#

# desc: check haproxy service

#

A=`ip address show eth0 | grep 192.168.1.100 | wc -l`

B=`ps -C haproxy --no-heading | wc -l`

if [ $A -eq 1 ]; then

if [ $B -eq 0 ]; then

/usr/local/haproxy/haproxy.sh start

sleep 3

fi

fi

######----

主备切换时邮件提醒程序(此程序源自litus,有小改动,调试通过)

#!/usr/bin/python

#coding: utf-8

from email.MIMEMultipart import MIMEMultipart

from email.MIMEText import MIMEText

from email.MIMEImage import MIMEImage

from email.Header import Header

import sys

import smtplib

#-------------------------------

# file: mailnotify.py

# desc: send notify email

#

#-------------------------------

strFrom = 'toplover@sina.com'

strTo = 'toplover@126.com'

smtp_server = 'smtp.sina.com'

smtp_user = 'toplover'

smtp_pass = 'xxx***xxx'

if sys.argv[1] != "master" and sys.argv[1] != "backup" and sys.argv[1] != "fault":

sys.exit()

else:

notify_type = sys.argv[1]

mail_title = "[crt] Haproxy-notify-info"

mail_body_plain = notify_type + 'alive,please check it now'

mail_body_html = 'bfont color=red' + notify_type + 'alive,please check it now'

msgRoot = MIMEMultipart('related')

msgRoot['Subject'] = Header(mail_title,'utf-8')

msgRoot['From'] = strFrom

msgRoot['To'] = strTo

msgAlternative = MIMEMultipart('alternative')

msgRoot.attach(msgAlternative)

msgText = MIMEText(mail_body_plain, 'plain', 'utf-8')

msgAlternative.attach(msgText)

msgText = MIMEText(mail_body_html, 'html', 'utf-8')

msgAlternative.attach(msgText)

smtp = smtplib.SMTP()

smtp.connect(smtp_server)

smtp.login(smtp_user,smtp_pass)

smtp.sendmail(strFrom, strTo, msgRoot.as_string())

smtp.quit()

到此完成了简单的haproxy+keepalived负载均衡主从热备功能。

不明之处请参阅haproxy官方cofiguration.txt文件及keepalived官方文档。

Top