Graylog+elasticsearch+mongodb集群+nginx负载均衡前端
网上有张图画的很好,搜索有关它的配置文章,google里有几篇英文的,都是依靠haproxy等或别的什么实现,没有纯粹的Graylog+elasticsearch+mongodb集群,项目需要,只有自己摸索一下了,搞好发现其实也很简单。

整个结构大概就是上图样子,nginx的负载均衡可以参考我前面的文章。将后端的web集群换成graylog集群地址就可以了。
下面是4台集群的配置效果图,完成后的效果是随便访问那个IP,都可以访问到所有的日志,节点可以根据需求任意添加,无论graylog,es,还是mongodb都可以。

配置过程如下,难点在于graylog的集群,安装软件的过程可以参考前面的安装过程。
========================================elasticsearch=================================
#vim /etc/elasticsearch/elasticsearch.yml
node.master: true #两台机器设置成master,其余节点此项不写
network.bind_host: 192.168.1.231 #绑定实际的服务器IP地址,不是集群的IP
cluster.name: graylog #与/etc/graylog/server/server.conf 中的elasticsearch_cluster_name 集群名称必须相同
discovery.zen.minimum_master_nodes: 2 #4台机器就2个够了
discovery.zen.ping.multicast.enabled: false
discovery.zen.ping.unicast.hosts: ["192.168.1.231:9300","192.168.1.232:9300","192.168.1.233:9300","192.168.1.234:9300"]
=================================================mongodb========================================
vim /etc/mongod.conf #所有节点配置文件相同
replication:
replSetName: graylog
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
storage:
dbPath: /var/lib/mongo
journal:
enabled: true
processManagement:
fork: true # fork and run in background
pidFilePath: /var/run/mongodb/mongod.pid # location of pidfile
net:
port: 27017
#mongo//进入数据库配置
rs.initiate()
rs.add("192.168.1.231:27017");
rs.add("192.168.1.232:27017");
rs.addArb("192.168.1.233:27017");
rs.add("192.168.1.234:27017");
graylog:PRIMARY> rs.config(); rs.config();
{
"_id" : "graylog",
"version" : 4,
"protocolVersion" : NumberLong(1),
"members" : [
{
"_id" : 0,
"host" : "node231:27017",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {
},
"slaveDelay" : NumberLong(0),
"votes" : 1
},
{
"_id" : 1,
"host" : "192.168.1.232:27017",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {
},
"slaveDelay" : NumberLong(0),
"votes" : 1
},
{
"_id" : 2,
"host" : "192.168.1.234:27017",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {
},
"slaveDelay" : NumberLong(0),
"votes" : 1
},
{
"_id" : 3,
"host" : "192.168.1.233:27017",
"arbiterOnly" : true,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {
},
"slaveDelay" : NumberLong(0),
"votes" : 1
}
],
"settings" : {
"chainingAllowed" : true,
"heartbeatIntervalMillis" : 2000,
"heartbeatTimeoutSecs" : 10,
"electionTimeoutMillis" : 10000,
"getLastErrorModes" : {
},
"getLastErrorDefaults" : {
"w" : 1,
"wtimeout" : 0
},
"replicaSetId" : ObjectId("578c49834bd6994271fcfad7")
}
}
============================graylog===================================
#vim /etc/graylog/server/server.conf
password_secret =0b4e7a0e5fe84ad35fb5f95b9ceeac790b4e7a0e5fe84ad35fb5f95b9ceeac79
root_password_sha2 =ed02457b5c41d964dbd2f2a609d63fe1bb7528dbe55e1abf5b52c249cd735797
elasticsearch_cluster_name = graylog
elasticsearch_discovery_zen_ping_multicast_enabled = false
elasticsearch_discovery_zen_ping_unicast_hosts = 192.168.1.231:9300,192.168.1.232:9300,192.168.1.233:9300,192.168.1.234:9300
mongodb_uri = mongodb://192.168.1.231:27017,192.168.1.232:27017,192.168.1.233:27017,192.168.1.234:27017/graylog
elasticsearch_shards = 4
elasticsearch_replicas = 1
mongodb_useauth = false #默认为false,可不必添加,生产环境必须
=====================测试=============================
使用curl命令操作elasticsearch
# curl -X GET 'http://192.168.1.231:9200/_cat/nodes'
192.168.1.234 192.168.1.234 7 13 0.06 d * Marrina
192.168.1.233 192.168.1.233 7 21 0.12 d m Banshee
192.168.1.231 192.168.1.231 8 23 0.43 d m Katie Power
192.168.1.232 192.168.1.232 7 22 0.15 d m Dark Phoenix
192.168.1.231 192.168.1.231 20 23 0.43 c - graylog-8562414f-0f9b-48d9-b0c6-9faab367832e
]# curl -X GET 'http://192.168.1.231:9200/_cluster/health?pretty=true'
{
"cluster_name" : "graylog",
"status" : "green",
"timed_out" : false,
"number_of_nodes" : 4,
"number_of_data_nodes" : 3,
"active_primary_shards" : 4,
"active_shards" : 4,
"relocating_shards" : 0,
"initializing_shards" : 0,
"unassigned_shards" : 0,
"delayed_unassigned_shards" : 0,
"number_of_pending_tasks" : 0,
"number_of_in_flight_fetch" : 0,
"task_max_waiting_in_queue_millis" : 0,
"active_shards_percent_as_number" : 100.0
}
mongodb状态查询
graylog:PRIMARY> rs.status()
{
"set" : "graylog",
"date" : ISODate("2016-07-18T09:14:33.419Z"),
"myState" : 1,
"term" : NumberLong(2),
"heartbeatIntervalMillis" : NumberLong(2000),
"members" : [
{
"_id" : 0,
"name" : "node231:27017",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 19532,
"optime" : {
"ts" : Timestamp(1468833273, 2),
"t" : NumberLong(2)
},
"optimeDate" : ISODate("2016-07-18T09:14:33Z"),
"electionTime" : Timestamp(1468813741, 1),
"electionDate" : ISODate("2016-07-18T03:49:01Z"),
"configVersion" : 5,
"self" : true
},
{
"_id" : 1,
"name" : "192.168.1.232:27017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 8272,
"optime" : {
"ts" : Timestamp(1468833271, 4),
"t" : NumberLong(2)
},
"optimeDate" : ISODate("2016-07-18T09:14:31Z"),
"lastHeartbeat" : ISODate("2016-07-18T09:14:31.802Z"),
"lastHeartbeatRecv" : ISODate("2016-07-18T09:14:31.765Z"),
"pingMs" : NumberLong(0),
"syncingTo" : "node231:27017",
"configVersion" : 5
},
{
"_id" : 2,
"name" : "192.168.1.234:27017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 8257,
"optime" : {
"ts" : Timestamp(1468833271, 4),
"t" : NumberLong(2)
},
"optimeDate" : ISODate("2016-07-18T09:14:31Z"),
"lastHeartbeat" : ISODate("2016-07-18T09:14:31.736Z"),
"lastHeartbeatRecv" : ISODate("2016-07-18T09:14:31.802Z"),
"pingMs" : NumberLong(0),
"syncingTo" : "192.168.1.232:27017",
"configVersion" : 5
},
{
"_id" : 3,
"name" : "192.168.1.233:27017",
"health" : 1,
"state" : 7,
"stateStr" : "ARBITER",
"uptime" : 8092,
"lastHeartbeat" : ISODate("2016-07-18T09:14:31.802Z"),
"lastHeartbeatRecv" : ISODate("2016-07-18T09:14:32.548Z"),
"pingMs" : NumberLong(0),
"configVersion" : 5
}
],
"ok" : 1
}
graylog:PRIMARY>
Graylog+elasticsearch+mongodb集群+nginx负载均衡前端的更多相关文章
- 基于【 centos7】四 || FastDFS集群+Nginx负载均衡
1. 架构设计 1.1 架构图 FastDFS是用c语言编写的一款开源的分布式文件系统.FastDFS为互联网量身定制,充分考虑了冗余备份.负载均衡.线性扩容等机制,并注重高可用.高性能等指标,使用F ...
- Tomcat集群 Nginx负载均衡 shell脚本实时监控Nginx
第一步,安装Tomcat 系统环境:Centos7 第1步:下载tomcat安装包 tomcat官网:https://tomcat.apache.org/ 第2步:安装包上传至linux中 第3步:下 ...
- 在Linux上使用Nginx为Solr集群做负载均衡
在Linux上使用Nginx为Solr集群做负载均衡 在Linux上搭建solr集群时需要用到负载均衡,但测试环境下没有F5 Big-IP负载均衡交换机可以用,于是先后试了weblogic的proxy ...
- 10分钟搭建服务器集群——Windows7系统中nginx与IIS服务器搭建集群实现负载均衡
分布式,集群,云计算机.大数据.负载均衡.高并发······当耳边响起这些词时,做为一个菜鸟程序猿无疑心中会激动一番(或许这是判断是否是一个标准阿猿的标准吧)! 首先自己从宏观把控一下,通过上网科普自 ...
- 架构之路:nginx与IIS服务器搭建集群实现负载均衡(二)
[前言] 在<架构之路:nginx与IIS服务器搭建集群实现负载均衡(一)>中小编简单的讲解了Nginx的原理!俗话说:光说不练假把式.接下来,小编就和大家一起来做个小Demo来体会一下N ...
- 架构之路:nginx与IIS服务器搭建集群实现负载均衡(三)
参考网址:https://blog.csdn.net/zhanghan18333611647/article/details/50811980 [前言] 在<架构之路:nginx与IIS服务器搭 ...
- Nginx实现tomcat集群进行负载均衡
一.背景 随着业务量和用户数量的激增,单一的tomcat部署应用已经无法满足性能需求,而且对于每次发布项目期间服务不可用的问题也凸显,既然出现了这个问题,那么我们本文就借助nginx来完美的解决这个问 ...
- Windows7系统中nginx与IIS服务器搭建集群实现负载均衡
10分钟搭建服务器集群——Windows7系统中nginx与IIS服务器搭建集群实现负载均衡 分布式,集群,云计算机.大数据.负载均衡.高并发······当耳边响起这些词时,做为一个菜鸟程序猿无疑 ...
- 搭建服务器集群——Windows7系统中nginx与IIS服务器搭建集群实现负载均衡
转载:https://www.cnblogs.com/xiongze520/p/10308720.html 分布式,集群,云计算机.大数据.负载均衡.高并发······当耳边响起这些词时,做为一个菜鸟 ...
随机推荐
- 【Qt官方例程学习笔记】Analog Clock Window Example (画笔的平移/旋转/缩放应用)
这个例子演示了如何使用QPainter的转换和缩放特性来简化绘图. 值得学习的: 定时器事件ID检查: 在定时器事件中检查定时器id是比较好的实践. QPainter抗锯齿: We call QPai ...
- 以后尽量不用cin、cout啦
cout输出有问题(对于double,不同OJ处理的结果不一样),cin读入机制较scanf繁琐.慢!!!!!!!!
- python学习笔记11 ----线程、进程、协程
进程.线程.协程的概念 进程和线程是操作系统中两个很重要的概念,对于一般的程序,可能有若干个进程,每一个进程有若干个同时执行的线程.进程是资源管理的最小单位,线程是程序执行的最小单位(线程可共享同一进 ...
- 一套简单的web即时通讯——第二版
前言 接上一版,这一版的页面与功能都有所优化,具体如下: 1.优化登录拦截 2.登录后获取所有好友并区分显示在线.离线好友,好友上线.下线都有标记 3.将前后端交互的值改成用户id.显示值改成昵称ni ...
- Linux系统及lvm知识
一.磁盘分区是怎样表示的 IDE磁盘的设备文件采用/dev/hdx 来命名,分区则采用/dev/hdxy来命名,其中想表示磁盘(a是第一块磁盘,b是第二块磁盘,以此类推),与代表分区的号码(由1开始, ...
- php解析入库跟出库
转载:http://www.jb51.net/article/39092.htm 数据放入数据库和取出来显示在页面需要注意什么 入库时 $str=addslashes($str); $sql=\&qu ...
- bzoj1010 玩具装箱
玩具装箱 P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京.他使用自己的压缩器进行压缩,其可以将任意物品变成一堆,再放到一种特殊的一维容器中.P教授有编号为1...N的N件玩具, ...
- 洛谷P2580(trie)
第一行一个整数 n,表示班上人数.接下来 n 行,每行一个字符串表示其名字(互不相同,且只含小写字母,长度不超过 50).第 n+2 行一个整数 m,表示教练报的名字.接下来 m 行,每行一个字符串表 ...
- bzoj3681: Arietta(网络流)
传送门 主席树优化建图? 然而我连代码都看不懂 贴个题解好了->这里 //minamoto #include<iostream> #include<cstdio> #in ...
- java 定位问题方法 (jdb 和 jstack)
使用java 做开发,大部分的朋友都是利用DIE 来做debug 工作,因为这样可视化效果好. 但是在真实的工作中,很多使用遇到问题,手头或者环境是不允许你利用DIE 来对源码做debug 工作,开发 ...