【阿圆实验】Grafana HA高可用方案

时间:2022-09-06 11:48:00

一.实现Grafana高可用

1.Grafana实现高可用性有两步:

>>使用共享数据库存储仪表板,用户和其他持久数据
>>决定如何存储会话数据。

2.Grafana高可用部署图

【阿圆实验】Grafana HA高可用方案

二 grafna代理配置

前言:因为我这里使用了supervisor进程管理器,每一个grafana都被进程管理器接管了,没有使用supervisor的同学,参考高可用配置就好,忽略关于supervisor相关的命令。

1.nginx配置

选取一台机器做主节点配置:

cd /data/yy-monitor-server/etc

	 # grafana
upstream gf{
ip_hash;
server 主机ip:3000;
server 其他机器ip:3000;
server 其他机器ip:3000;
}
# grafana
location /grafana/ {
proxy_set_header Authorization "Basic YWRtaW46YWRtaW4=";
proxy_pass http://gf/;
}

注:ip_hash;使用粘滞会话。

重启nginx:

~]# supervisorctl restart nginx
nginx: stopped
nginx: started

2 验证配置

其中一台# supervisorctl stop grafana
grafana: stopped 另一台# supervisorctl stop grafana
grafana: stopped

访问ui

结果:正常访问,代理配置成功如下图。

【阿圆实验】Grafana HA高可用方案

三.使用同一数据源的配置

1.准备环境:

至少3台主机,其中一台主机已经装好mysql数据库以及redis数据库。

# mysql -uroot -p12345678
mysql> CREATE DATABASE grafana DEFAULT CHARACTER SET utf8;
Query OK, 1 row affected (0.02 sec) mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| apolloconfigdb |
| apolloportaldb |
| grafana |
| mysql |
| performance_schema |
| sys |
| testforliuxw |
| txc |
+--------------------+
9 rows in set (0.01 sec)
mysql> use grafana;
Database changed
mysql> show tables;
Empty set (0.00 sec) mysql> CREATE TABLE `session` (
-> `key`CHAR(16) NOT NULL,
-> `data`BLOB,
-> `expiry`INT(11) UNSIGNED NOT NULL,
-> PRIMARY KEY (`key`)
-> ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.04 sec) mysql> show tables;
+-------------------+
| Tables_in_grafana |
+-------------------+
| session |
+-------------------+
1 row in set (0.00 sec)

2.修改配置文件

2.1 修改数据源

Grafana默认使用了内嵌数据库sqlite3来进行用户以及dashboard相关配置的存储。更改配置文件的[database]部分,改为mysql(可以更改为"postgres"等其他数据库):

cd /data/yy-monitor-server/etc

vi grafana.ini

#################################### Database ####################################
[database]
# You can configure the database connection by specifying type, host, name, user and password
# as seperate properties or as on string using the url propertie. # Either "mysql", "postgres" or "sqlite3", it's your choice
;type = mysql
;host = 装有mysql数据库的主机ip:3306
;name = grafana
;user = root
# If the password contains # or ; you have to wrap it with trippel quotes. Ex """#password;"""
;password =12345678 # Use either URL or the previous fields to configure the database
# Example: mysql://user:secret@host:port/database
;url = # For "postgres" only, either "disable", "require" or "verify-full"
;ssl_mode = disable # For "sqlite3" only, path relative to data_path setting
;path = grafana.db # Max conn setting default is 0 (mean not set)
;max_conn =
;max_idle_conn =
;max_open_conn =

注:

Grafana支持memory,file,mysql,postgres,memchche,redis这几种存储。默认把session存在本地的文件系统,因此如果是采用session sticky策略进行转发的,则没有影响,否则的话,需要处理session同步问题。

2.3 配置session

#################################### Session ####################################
[session]
# Either "memory", "file", "redis", "mysql", "postgres", default is "file"
;provider = mysql # Provider config options
# memory: not have any config yet
# file: session dir path, is relative to grafana data_path
# redis: config like redis server e.g. `addr=127.0.0.1:6379,pool_size=100,db=grafana`
# mysql: go-sql-driver/mysql dsn config string, e.g. `user:password@tcp(127.0.0.1:3306)/database_name`
# postgres: user=a password=b host=localhost port=5432 dbname=c sslmode=disable
;provider_config = root:12345678@tcp(装有mysql数据库的主机ip:3306)/grafana # Session cookie name
;cookie_name = grafana_sess # If you use session in https only, default is false
;cookie_secure = false # Session life time, default is 86400
;session_life_time = 86400
#################################### Session ####################################
[session]
;provider = redis
;provider_config = addr=装有redis数据库的主机ip:6379,pool_size=100,db=grafana
;cookie_name = grafana_sess
;cookie_secure = false
;session_life_time = 86400

注:可以通过修改;session_life_time,在grafna上创建用户,验证效果。

2.4 重启grafana

# supervisorctl restart grafana
grafana: stopped
grafana: started

3.ui上配置数据库

配置相同的Mysql数据源,配置成功如下图:

【阿圆实验】Grafana HA高可用方案

4.验证配置

可在某一主机的grafna页面保存新的dashboard,在其他机器上可见。

【阿圆实验】Grafana HA高可用方案的更多相关文章

  1. redis HA高可用方案Sentinel和shard

    1.搭建redis-master.redis-slave以及seninel哨兵监控 在最小配置:master.slave各一个节点的情况下,不管是master还是slave down掉一个,“完整的” ...

  2. redis 学习笔记(4)-HA高可用方案Sentinel配置

    上一节中介绍了master-slave模式,在最小配置:master.slave各一个节点的情况下,不管是master还是slave down掉一个,“完整的”读/写功能都将受影响,这在生产环境中显然 ...

  3. MySQL高可用方案

    高可用架构对于互联网服务基本是标配,无论是应用服务还是数据库服务都需要做到高可用.虽然互联网服务号称7*24小时不间断服务,但多多少少有一些时候服务不可用,比如某些时候网页打不开,百度不能搜索或者无法 ...

  4. Redis之高可用方案

    Redis之高可用方案   Redis以其高效的访问速度著称.但由于官方还未发布redis-cluster,而redis的replica又有诸多不便:比如一组master-slave的机器,如果之间有 ...

  5. 大型网站系统架构实践(五)深入探讨web应用高可用方案

    从上篇文章到这篇文章,中间用了一段时间准备,主要是想把东西讲透,同时希望大家给与一些批评和建议,这样我才能有所进步,也希望喜欢我文章的朋友,给个赞,这样我才能更有激情,呵呵. 由于本篇要写的内容有点多 ...

  6. 分布式数据存储 - MySQL主从复制高可用方案

    前面几篇文章说道MySQL数据库的高可用方案主从复制.主从复制的延迟产生原因.延迟检测及延迟解决方案(并未从根本上解决),这种主从复制方案保证数据的冗余的同时可以做读写分离来分担系统压力但是并非是高可 ...

  7. (转)基于Redis Sentinel的Redis集群(主从&Sharding)高可用方案

    转载自:http://warm-breeze.iteye.com/blog/2020413 本文主要介绍一种通过Jedis&Sentinel实现Redis集群高可用方案,该方案需要使用Jedi ...

  8. mysql高可用方案MHA介绍

    mysql高可用方案MHA介绍 概述 MHA是一位日本MySQL大牛用Perl写的一套MySQL故障切换方案,来保证数据库系统的高可用.在宕机的时间内(通常10-30秒内),完成故障切换,部署MHA, ...

  9. keepalived+mysql双主复制高可用方案

    MySQL双主复制,即互为Master-Slave(只有一个Master提供写操作),可以实现数据库服务器的热备,但是一个Master宕机后不能实现动态切换.而Keepalived通过虚拟IP,实现了 ...

随机推荐

  1. openwrt编译环境搭建

    1,首先安装ubuntu系统,这里安装的是虚拟机 2,安装openwrt编译所需环境  apt-get install build-essential libncures5-dev gawk libs ...

  2. I2C的主机从机模拟

    好久没有在csdn上面做笔记了,主要是最近琐碎的事情太多,乱七八糟的事情让自己不能坚定下来做自己喜欢做的事情.上了星期花了两天的时间模拟了I2C的主机和从机通信.一般都是主机模拟,从机直接用硬件I2C ...

  3. spring-data-solr官方学习文档介绍

    spring-data-solr文档介绍如下: 通过http://www.springframework.org/schema/data/solr/spring-solr-1.0.xsd(spring ...

  4. 雅思创始人Keith Taylor谈英语学习

    雅思创始人Keith Taylor谈英语学习 “要学的是信息,而不是语言” 我们要学习一个国家的语言就得知道这个国家的方方面面.要学习英语就得了解英美国家的社会.经济.人文.历史等各方面的信息. 大家 ...

  5. Java Swing jpanel paint方法执行两次的问题

    Java Swing jpanel paint方法执行两次的问题: 在其他环境下执行了两次,自己测试怎么都是执行了一次,记录一下这个问题:需要后继工作: 可能是进行各种参数设置的时候导致了paint方 ...

  6. testlink(以及服务器)问题定位思路

    testlink又炸了,记录下问题定位思路: 1.翻阅logs: tail -100f ***.log 2.将关键字百度: 但是狗日的网上一般不会告诉我们这修改的文件在哪(上下图无关联,因为图是后面随 ...

  7. JavaScript面向对象编程(9)高速构建继承关系之整合原型链

    前面我们铺垫了非常多细节.是为了让大家更加明晰prototype的使用细节: 如今能够将前面的知识整合起来,写一个函数用于高速构建基于原型链的继承关系了: function extend(Child, ...

  8. 获取sap登陆用户名的中文描述

    一.业务场景: 当通过MKPF-USNAM查找ADRP-NAME_LAST时,中间缺少一个表,即USR21.否则,MKPF-USNAM不能和ADRP-PERSNUMBER直接对等. 二.解决方法: D ...

  9. 【Java】「深入理解Java虚拟机」学习笔记(4)- 类文件结构

    我为什么喜欢Java,另一个重要原因就是跨平台,WORA. 程序员是爽了,但肯定有人要为你遮风挡雨,解决WORA的基石就是字节码+虚拟机. ♣Tip 其实这里存在两种无关性,一是平台无关性.另一个是语 ...

  10. Python 类的特性讲解

    类的特性讲解 类的特性 #定义一个类, class是定义类的语法,Role是类名, (object)是新式类的写法,必须这样 写,以后再讲为什么 class Role(object): #初始化函数, ...