zoukankan      html  css  js  c++  java
  • 3.高并发教程-基础篇-之分布式全文搜索引擎elasticsearch的搭建

    高并发教程-基础篇-之分布式全文搜索引擎elasticsearch的搭建

    如果大家看了我的上一篇《2.高并发教程-基础篇-之nginx+mysql实现负载均衡和读写分离》文章,如果能很好的利用,那么其实已经可以轻松日抗千万级别的访问量了,但是如果业务涉及查询比较多,查询条件比较丰富,又或者我就想要查询的响应更快点,那么在mysql上面去做优化,其实比较辛苦,有没有更好的解决方案呢?答案是肯定的!它就是我们今天的主角,分布式全文搜索引擎elasticsearch.

    技巧提示:mysql集群层主要提供核心业务逻辑的读写以及数据的冗余备份;elasticsearch负责前端的查询和展示。比如,用户的所有写操作都是在mysql的master服务器上面完成;然后通过主从机制,把数据同步至多个mysql从机,然后通过从机把数据同步至elasticsearch.因为有多个mysql从机,所有同步的时候划分合适数量的表分担至各个从机去同步,这样既可以减轻各个mysql服务器的压力,又可以更加高效同步。同步工具这里推荐logstash,大家自行搜索了解,如果遇到坑可以留言。

    一、架构图

    服务器准备:3台,ubuntu16.04系统+elasticsearch-6.2.4
    slave1:192.168.1.191 ES集群master
    slave2:192.168.1.192 ES集群slave
    slave3:192.168.1.193 ES集群slave
    [注意:nginx方向代理和mysql集群的配置这里不做说明,大家可以看我的之前的文章]

    二、elasticsearch配置(分别在三台服务器上面进行如下操作)

    1.java环境配置:

        *请自行前往java官方下载java,然后解压至合适目录
        vim /etc/profile加入如下内容:
        #java
        export JAVA_HOME=/home/qizexi/data/java #这个改为你java的解压目录
        export JAVA_CLASS=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/jre/lib/dt.jar:$JAVA_HOME/lib/tools.jar
        export PATH=$PATH:$JAVA_HOME/bin
        保存,退出
        source /etc/profile
        java -version看到如下内容即是java安装成功
        ---------------------------------------
        java version "1.8.0_141"
        ---------------------------------------
            

    2.账号准备:

        elasticsearch不允许以root账号运行,所以我们可以添加一个es用户来负责运行elasticsearch
        useradd es
        passwd es
    
        将elasticsearch-6.2.4的安装目录变更为es用户
        chown -R es:es elasticsearch-6.2.4
    
        改变ulimit的1024的限制
        vim /etc/security/limits.conf
        * hard nofile 100000
        * soft nofile 100000
        * hard nproc 100000
        * soft nproc 100000
        保存退出
        source /etc/security/limits.conf
        切换es用户(su es)之后运行
        ulimit -n可以看到
        100000
        说明成功,否则可以重启生效:)
    
        改变max_map_countd的限制:
        vim /etc/sysctl.conf修改如下配置:
        vm.max_map_count=262144
        保存退出
        运行:sysctl -p
            

    3.主服务器配置(191):

        cd 到elasticsearch-6.2.4的解压目录
        vim config/elasticsearch.yml修改如下内容:
        cluster.name: my-app
        node.name: master
        network.host: 192.168.1.191
        http.port: 9200
        discovery.zen.ping.unicast.hosts: ["192.168.1.191", "192.168.1.192", "192.168.1.193"]
        保存,然后使用es账号启动即可.
        su es
        bin/elasticsearch -d
        su root
        netstat -tlnp看到如下内容即是成功(有可能过几秒钟才能看到):
        ------------------------------------------------------
        192.168.1.191:9200
        192.168.1.191:9300
            

    4.配置从服务器(192,193):

        cd 到elasticsearch-6.2.4的解压目录
        vim config/elasticsearch.yml修改如下内容:
        cluster.name: my-app
        node.name: slave1 #193服务器改为slave2
        network.host: 192.168.1.192 #193服务器改为192.168.1.193
        http.port: 9200
        discovery.zen.ping.unicast.hosts: ["192.168.1.191", "192.168.1.192", "192.168.1.193"]
        保存,然后使用es账号启动即可.
        su es
        bin/elasticsearch -d
        su root
        netstat -tlnp看到如下内容即是成功(有可能过几秒钟才能看到):
        -------------------------------------------------------
        192.168.1.192:9200 #192上面看到是193
        192.168.1.192:9300 #192上面看到是193
            

    5.查看集群的状态:

        curl -XGET 'http://192.168.1.191:9200/_cat/nodes?v'
        看到三个节点即可成功:
        ip            heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
        192.168.1.191           25          55   0    0.00    0.01     0.00 mdi       *      master
        192.168.1.192           22          97   5    0.70    0.34     0.17 mdi       -      slave1
        192.168.1.193           20          75  30    0.54    0.14     0.05 mdi       -      slave2
            
  • 相关阅读:
    【转】win8.1下安装ubuntu
    Codeforces 1025G Company Acquisitions (概率期望)
    Codeforces 997D Cycles in Product (点分治、DP计数)
    Codeforces 997E Good Subsegments (线段树)
    Codeforces 1188E Problem from Red Panda (计数)
    Codeforces 1284E New Year and Castle Building (计算几何)
    Codeforces 1322D Reality Show (DP)
    AtCoder AGC043C Giant Graph (图论、SG函数、FWT)
    Codeforces 1305F Kuroni and the Punishment (随机化)
    AtCoder AGC022E Median Replace (字符串、自动机、贪心、计数)
  • 原文地址:https://www.cnblogs.com/qizexi/p/9048766.html
Copyright © 2011-2022 走看看