云计算_CentOS下用Tomcat+Zookeeper+Nginx+Solr完美搭建SolrCloud平台

来源:互联网 发布:刺客信条大革命优化版 编辑:程序博客网 时间:2024/05/18 03:16
源地址:http://www.sjsjw.com/kf_cloud/article/44_5945_1823.asp
 

  最近单位要用一套能支持日均几十万人访问,存储数据在超百亿条以上的全文检索系统。设想最好的方案是使用Hadoop,用Hadoop存储这超百亿数据不是个问题,但要用Hadoop的MapReduce对这超百亿的数据进行全文检索并不是件易事,要学习MapReduce需要一个较长的时间。之前我们有接触过Solr,也用Solr做过单机环境下的实际项目,从Solr4.0开始,Solr已经开始支持SolrCloud云功能,因此此次项目选用最新的Solr 4.5.1进行开发和部署。 
  在部署SolrCloud过程中,虽然百度了很多文章(每篇文章资料都不是很全),但还是走了不少弯路,花了近一个星期才完成一个近似完美的SolrCloud平台的搭建。在此,我把搭建部署SolrCloud过程的每一步记录下来,供大家学习参考。 
  一、大致框架和软硬件环境 
  1、硬件环境:6台虚拟主机,内存各为16GB,系统分区为100GB,存放Solr、Zookeeper数据的分区为独立的磁盘或RAID盘(加载到/media目录下) 
  2、软件环境:CentOS 6.3 (64位) + Java 1.7.0_25 + Nginx 1.4.3 + Tomcat 7.0.42 + Zookeeper 3.4.5 + Solr 4.5.1 
  3、大致框架:5台虚拟主机跑Tomcat+Zookeeper+Solr形成一个云环境,1台虚拟主机跑Nginx用于负载均衡。另外还需要一台DNS服务器用于域名的解析(该服务如果原生产环境中没有,可以将DNS服务跑在Nginx主机上,本人的环境里有一台Windows Server在跑DNS),使用DNS最大的好处是在以后增加新的SolrCloud节点服务器时,可以不用更新之前每台服务器上的hosts文件。 
  4、Web服务的端口配置: 
  由于为了充分利用主机资源,我们的SolrCloud运行包和开发的程序应用包都跑在同一个主机的同一个Tomcat下,这会导致对Solr有点了解的人可以通过URL直接连入SolrCloud的管理界面进行节点的增删改,这是我们的项目不希望看到的。因此,本文将开发的程序应用包跑在Tomcat的80端口下,而SolrCloud包则运行在Tomcat的9998下。 
  这样配置后,我们输入网址 http://nginx.jyga.com 将访问到我们的项目工程界面,输入网址 http://nginx.jyga.com:8080/solr 将访问到SolrCloud的管理界面,以方便项目的开发测试。 
  5、DNS解析情况: 
dns1.jyga.com        192.168.0.1dns2.jyga.com        192.168.0.2nginx.jyga.com       192.168.0.10solr1.jyga.com       192.168.0.11solr2.jyga.com       192.168.0.12solr3.jyga.com       192.168.0.13solr4.jyga.com       192.168.0.14solr5.jyga.com       192.168.0.15

 

  二、准备工作 
  1、安装 Java 1.7.0_25  (每台虚拟主机都要安装,可以先安装一台,然后克隆出其它虚拟主机。如果是多台物理主机,就只能一台一台安装了) 
  (1)检查系统是已安装的Java的版本 
[root@nginx 桌面]# java -versionjava version "1.6.0.24"OpenJDK Runtime Environment (IcedTea6 1.11.1) (rhel-1.45.11.1.el6-x86_64)OpenJDK 64-bit Server VM (build 20.0-b12, mixed mode)

  (2)如果已安装的版本为openjdk或版本低于1.7.0(CentOS 6.3默认安装的是OpenJDK 1.6),请安装Java 1.7.0。  如果安装的版本已经是1.7.0,则可以不用再安装。 
[root@nginx 桌面]# rpm -ivh jdk-7u25-linux-x64.rpmPreparing...                        ######################### [100%]    1:jdk                            ######################### [100%]Uppacking JAR files...         rt.jar...         jsse.jar...         charsets.jar...         tools.jar...         localedata.jar...
  (3)修改 /etc/profile 文件,在该文件的尾部添加下述JAVA的环境变量 
export JAVA_HOME=/usr/java/jdk1.7.0_25export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexport PATH=$PATH:$JAVA_HOME/bin
  (4)不重启使 /etc/profile 立即生效 
[root@nginx 桌面]# source /etc/profile

  (5)修改系统使用的Java版本,使已安装的Java 1.7.0_25生效(输入选择的号码2) 
[root@nginx 桌面]# update-alternatives --install /usr/bin/java java /usr/java/jdk1.7.0_03/bin/java 60[root@nginx 桌面]# update-alternatives --config java共有 2 个程序提供"java"。  选择      命令-----------------------------------------------*+ 1              /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java   2              /usr/java/jdk1.7.0_25/bin/java按 Enter 来保存当前选择[+],或键入选择号码:2
  (6)确认当前使用的Java版本 
[root@nginx 桌面]# java -versionjava version "1.7.0_25"Java(TM) SE Runtime Environment (build 1.7.0_25-b15)Java HotSpot(TM) 64-Bit Server VM (build 23.25-b01, mixed mode)

  2、配置主机名称及网络环境 
  (1)修改 /etc/sysconfig/network 文件,变更主机的主机名。(其它主机按照分配的域名进行修改) 
HOSTNAME=nginx.jyga.com

  (2)修改 /etc/hosts 文件,变更主机指向。(其它主机按照分配的域名进行相应的修改) 
127.0.0.1   nginx.jyga.com localhost localhost.localdomain::1         localhost localhost.localdomain
  (3)修改主机的IP、网关、子网掩码及DNS指向。(其它主机按照分配的IP进行相应的修改) 
 

  3、应用程序和工作目录的设置 
  (1)格式化独立的磁盘(或RAID盘),分区格式为 ext4,设置分区的卷标为 solr 。同时将分区挡挂载到 /media 目录下(如图) 
 

  (2)设置为启动自动挂载分区。修改 /etc/fstab 文件,在尾部加入下述一行: 
/dev/sdb           /media/solr           ext4   defaults 0 0

  (3)创建Tomcat、Zookeeper和Nginx的工作目录为 /media/solr/app 
[root@nginx 桌面]# mkdir /media/solr/app
  (4)创建Zookeeper和SolrCloud的数据存储目录为 /media/solr/data 
[root@nginx 桌面]# mkdir /media/solr/data
  4、(可选,视实际情况而定)关闭防火墙。因为Zookeeper、Tomcat和nginx都要通过开放相应的端口进行服务,为了方便将防火墙关闭。 
[root@nginx 桌面]# chkconfig iptables off
三、部署独立的 Zookeeper 3.4.5 
  1、先在solr1.jyga.com主机上部署zookeeper 
  2、将下载的 zookeeper-3.4.5.tar.gz 包解压缩至 /media/solr/app/zookeeper 目录下。 
  3、创建 zookeeper 的数据存储目录和日志存储目录 
[root@solr1 桌面]# mkdir /media/solr/data/zookeeper[root@solr2 桌面]# mkdir /media/solr/data/zookeeper/data[root@solr3 桌面]# mkdir /media/solr/data/zookeeper/logs
  4、根据 Zookeeper 的 conf 目录下的zoo_sample.cfg 文件复制一份为 zoo.cfg ,然后修改 zoo.cfg 文件 
tickTime=2000initLimit=10syncLimit=5dataDir=/media/solr/data/zookeeper/data    #修改为相应的位置,Zookeeper数据存储目录dataLogDir=/media/solr/data/zookeeper/logs   #此行为添加行,Zookeeper日志存储目录connectclientPort=2181           #Zookeeper的客户端连接端口,建议不要修改server.1=solr1.jyga.com:2888:3888          server.2=solr2.jyga.com:2888:3888server.3=solr3.jyga.com:2888:3888server.4=solr4.jyga.com:2888:3888server.5=solr5.jyga.com:2888:3888

  server.1=solr1.jyga.com:2888:3888 这行的书写格式为 server.N=YYY:A:B 
  其中N为Zookeeper的主机编号,这里的主机编号只要能跟下面的myid文件中的编号对应即可;YYY为主机的域名或主机名或者IP地址;A为LF通信端口,表示该服务器与集群中的leader交换的信息的端口;B为选举端口,表示选举新leader时服务器间相互通信的端口(当leader挂掉时,其余服务器会相互通信,选择出新的leader)。 
  5、在 /media/solr/data/zookeeper/data 下面创建一个 myid 文件,内容为主机对应的编号 
[root@solr1 桌面]# echo "1" >> /media/solr/data/zookeeper/data/myid
  6、将已配置好的 Zookeeper 相关文件复制到其它4台主机 
[root@solr1 桌面]# scp -r /media/solr/app/zookeeper root@solr2.jyga.com:/media/solr/app/zookeeper[root@solr1 桌面]# scp -r /media/solr/data/zookeeper root@solr2.jyga.com:/media/solr/data/zookeeper
[root@solr1 桌面]# scp -r /media/solr/app/zookeeper root@solr3.jyga.com:/media/solr/app/zookeeper[root@solr1 桌面]# scp -r /media/solr/data/zookeeper root@solr3.jyga.com:/media/solr/data/zookeeper
[root@solr1 桌面]# scp -r /media/solr/app/zookeeper root@solr4.jyga.com:/media/solr/app/zookeeper[root@solr1 桌面]# scp -r /media/solr/data/zookeeper root@solr4.jyga.com:/media/solr/data/zookeeper
[root@solr1 桌面]# scp -r /media/solr/app/zookeeper root@solr5.jyga.com:/media/solr/app/zookeeper[root@solr1 桌面]# scp -r /media/solr/data/zookeeper root@solr5.jyga.com:/media/solr/data/zookeeper
  7、通过 SSH 登录到其它主机,删除对应的 myid 文件,并根据主机对应的编号重新生成 myid 文件
[root@solr1 桌面]# ssh root@solr2.jyga.comroot@solr2.jyga.com's password:    <在此输入solr2主机的root帐户的密码,建议所有主机的密码设置成一样的>[root@solr2 ~]# rm /media/solr/data/zookeeper/data/myidrm:是否删除普通文件 "/media/solr/data/zookeeper/data/myid"? y[root@solr2 ~]# echo "2" >> /media/solr/data/zookeeper/data/myid
[root@solr2 ~]# ssh root@solr3.jyga.comroot@solr3.jyga.com's password:    [root@solr3 ~]# rm /media/solr/data/zookeeper/data/myidrm:是否删除普通文件 "/media/solr/data/zookeeper/data/myid"? y[root@solr3 ~]# echo "3" >> /media/solr/data/zookeeper/data/myid
[root@solr3 ~]# ssh root@solr4.jyga.comroot@solr4.jyga.com's password:    [root@solr4 ~]# rm /media/solr/data/zookeeper/data/myidrm:是否删除普通文件 "/media/solr/data/zookeeper/data/myid"? y[root@solr4 ~]# echo "4" >> /media/solr/data/zookeeper/data/myid
[root@solr4 ~]# ssh root@solr5.jyga.comroot@solr5.jyga.com's password:    [root@solr5 ~]# rm /media/solr/data/zookeeper/data/myidrm:是否删除普通文件 "/media/solr/data/zookeeper/data/myid"? y[root@solr5 ~]# echo "5" >> /media/solr/data/zookeeper/data/myid

  8、登录到不同的主机启动 zookeeper 
[root@solr1 桌面]# /media/solr/app/zookeeper/bin/zkServer.sh start
[root@solr2 ~]# /media/solr/app/zookeeper/bin/zkServer.sh start
[root@solr3 ~]# /media/solr/app/zookeeper/bin/zkServer.sh start
[root@solr4 ~]# /media/solr/app/zookeeper/bin/zkServer.sh start
[root@solr5 ~]# /media/solr/app/zookeeper/bin/zkServer.sh start
  9、查看 zookeeper 的运行状态(注意,当只启动所有节点数的一半节点的 Zookeeper 服务的时候,会出现运行错误的提示。要确定 Zookeeper 是否已经运行,可以使用 netstat -tnl 命令看一下有没有2188和3888端口) 
[root@solr1 桌面]# /media/solr/app/zookeeper/bin/zkServer.sh statusJMX enabled by defaultUsing config: /media/solr/app/zookeeper/bin/../conf/zoo.cfgMode: follower
  当看到Mode为follower或leader时,表明 Zookeeper 集群已经开始运行,并自动选举出了 leader 节点以及 follower 节点,此时可以用 zookeeper 的 zkCli.sh连接到集群中用 ls / 命令查看 zookeeper 中节点下的 Node 信息。 
[root@solr1 桌面]# /media/solr/app/zookeeper/bin/zkCli.sh -server solr1.jyga.com:2181........ <这里省略连接后出现的相关提示信息>[zk: solr1.jyga.com:2181(CONNECTED) 0] ls /[zookeeper, overseer, overseer_elect]
  10、如果在实际环境中防火墙必须为打开状态的话,需要将 Zookeeper 运行涉及的端口加入防火墙设置。修改 /etc/sysconfig/iptables 文件,在COMMIT前面加入以下几行 
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 2181 -j ACCEPT-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 2888 -j ACCEPT-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 3888 -j ACCEPT
四、安装Tomcat 7.0.42 并部署 Solr 4.5.1 和 项目包 
  1、在solr1.jyga.com主机上解压缩 apache-tomcat-7.0.42.tar.gz 至 /media/solr/app/tomcat 。 
  2、在 tomcat 目录下创建两个目录 webapps-jyga 和 webapps-solr ,分别存放项目包和solr.war包 
[root@solr1 桌面]# mkdir /media/solr/app/tomcat/webapps-jyga[root@solr1 桌面]# mkdir /media/solr/app/tomcat/webapps-solr
  3、将项目包复制到 webapps-jyga 目录下 
[root@solr1 桌面]# cp jyga.war /media/solr/app/tomcat/webapps-jyga/jyga.war

  4、解压缩 solr-4.5.1.tgz 至 /media/solr/app/solr下 
  5、将 example\webapps 目录下的 solr.war 复制到 webapps-solr 目录下 
[root@solr1 桌面]# cp /media/solr/app/solr/example/webapps/solr.war /media/solr/app/tomcat/webapps-solr/solr.war

  6、将 solr 中的 example/solr 目录复制到 /media/solr/data 下,做为 SolrCloud 的数据存储目录 
[root@solr1 桌面]# cp -r /media/solr/app/solr/example/solr /media/solr/data/solr
  7、将 solr 中的 example/lib/ext 目录下的所有 jar 文件添加到 /media/solr/app/tomcat/webapps-solr/solr.war 包中的 WEB-INF/lib 目录中,使该目录下一共有45个jar文件。 
  8、将 solr.war 包中的 WEB-INF/web.xml 文件解压缩出来,按下述内容修改相应的行,并将修改后的 web.xml 文件添加进solr.war 包覆盖原文件 
<env-entry>  <env-entry-name>solr/home</env-entry-name>  <env-entry-value>/media/solr/data/solr</env-entry-value>  <env-entry-type>java.lang.String</env-entry-type></env-entry

  9、修改 /media/solr/data/solr/solr.xml 文件中的 <solrcloud>节点 
  <solrcloud>    <str name="host">${host:}</str>    <int name="hostPort">9998</int>    <str name="hostContext">${hostContext:solr}</str>    <int name="zkClientTimeout">${zkClientTimeout:15000}</int>    <bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>  </solrcloud>
  10、修改 tomcat 的配置文件以实现分别以 80 和 9998 端口运行项目包和solr包 
[root@nginx 桌面]# vi /media/solr/app/tomcat/conf/server.xml<?xml version='1.0' encoding='utf-8'?><Server port="8005" shutdown="SHUTDOWN">  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />  <Listener className="org.apache.catalina.core.JasperListener" />  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />  <GlobalNamingResources>    <Resource name="UserDatabase" auth="Container"              type="org.apache.catalina.UserDatabase"              description="User database that can be updated and saved"              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"              pathname="conf/tomcat-users.xml" />  </GlobalNamingResources>  <Service name="SolrCloud">    <Connector port="9998" protocol="HTTP/1.1"               connectionTimeout="20000"               redirectPort="8443"               URIEncoding="UTF-8" />    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />    <Engine name="SolrCloud" defaultHost="localhost">      <Realm className="org.apache.catalina.realm.LockOutRealm">        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"               resourceName="UserDatabase"/>      </Realm>      <Host name="localhost"  appBase="webapps-solr"            unpackWARs="true" autoDeploy="true">        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"               prefix="localhost_access_log." suffix=".txt"               pattern="%h %l %u %t "%r" %s %b" />      </Host>    </Engine>  </Service>  <Service name="JYGA">    <Connector port="80" protocol="HTTP/1.1"               connectionTimeout="20000"               redirectPort="8443"               URIEncoding="UTF-8" />    <Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />    <Engine name="JYGA" defaultHost="localhost">      <Realm className="org.apache.catalina.realm.LockOutRealm">        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"               resourceName="UserDatabase"/>      </Realm>      <Host name="localhost"  appBase="webapps-jyga"            unpackWARs="true" autoDeploy="true">        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"               prefix="localhost_access_log." suffix=".txt"               pattern="%h %l %u %t "%r" %s %b" />      </Host>    </Engine>  </Service></Server>

  11、修改 tomcat 的启动文件 catalina.sh 
[root@solr1 桌面]# vi /media/solr/app/tomcat/bin/catalina.sh#------------------------------------CATALINA_HOME=/media/solr/app/tomcatJAVA_HOME=/usr/java/jdk1.7.0_25JAVA_OPTS="-verbose:gc -Xloggc:solr_gc.log -Dsolr.solr.home=/media/solr/data/solr -DzkHost=solr1.jyga.com:2181,solr2.jyga.com:2181,solr3.jyga.com:2181,solr4.jyga.com:2181,solr5.jyga.com:2181"# OS specific support. $var _must_ be set to either true of false

  12、将 /media/solr/app/tomcat 和 /media/solr/data/solr 两个目录复制到其它4台主机中 
[root@solr1 桌面]# scp -r /media/solr/app/tomcat root@solr2.jyga.com:/media/solr/app/tomcat[root@solr1 桌面]# scp -r /media/solr/data/solr root@solr2.jyga.com:/media/solr/data/solr
[root@solr1 桌面]# scp -r /media/solr/app/tomcat root@solr3.jyga.com:/media/solr/app/tomcat[root@solr1 桌面]# scp -r /media/solr/data/solr root@solr3.jyga.com:/media/solr/data/solr
[root@solr1 桌面]# scp -r /media/solr/app/tomcat root@solr4.jyga.com:/media/solr/app/tomcat[root@solr1 桌面]# scp -r /media/solr/data/solr root@solr4.jyga.com:/media/solr/data/solr
[root@solr1 桌面]# scp -r /media/solr/app/tomcat root@solr5.jyga.com:/media/solr/app/tomcat[root@solr1 桌面]# scp -r /media/solr/data/solr root@solr5.jyga.com:/media/solr/data/solr
  12、启动5台主机中的 tomcat
[root@solr1 桌面]# /media/solr/app/tomcat/bin/catalina.sh start
[root@solr1 桌面]# ssh root@solr2.jyga.com[root@solr2 ~]# /media/solr/app/tomcat/bin/catalina.sh start
[root@solr2 ~]# ssh root@solr3.jyga.com[root@solr3 ~]# /media/solr/app/tomcat/bin/catalina.sh start
[root@solr3 ~]# ssh root@solr4.jyga.com[root@solr4 ~]# /media/solr/app/tomcat/bin/catalina.sh start
[root@solr4 ~]# ssh root@solr5.jyga.com[root@solr5 ~]# /media/solr/app/tomcat/bin/catalina.sh start

  13、如果在实际环境中防火墙必须为打开状态的话,需要将 Tomcat 运行涉及的端口加入防火墙设置。修改 /etc/sysconfig/iptables 文件,在COMMIT前面加入以下几行 
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 80 -j ACCEPT-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 9998 -j ACCEPT

  14、通过浏览器查看 SolrCloud 的运行情况,输入网址 http://solr1.jyga.com:9998/solr (这儿查看的是solr1主机的,要看其它主机的可以修改网址) 


  此时看到的 Cloud 中右边是空白,是因此我们还没有创建相应的 Collection。要正确创建 Collection ,还需要上传正确的配置文件,本文以Solr包中的例子 collection1 为模板。 
  15、上传 collection1/conf 目录下的配置文件,并起名为 defaultConf 
[root@solr1 ~]$ java -classpath .:/media/solr/app/tomcat/webapp-solr/solr/lib/* org.apache.solr.cloud.ZkCLI -cmd upconfig -zkhost solr1.jyga.com:2181,solr2.jyga.com:2181,solr3.jyga.com:2181,solr4.jyga.com:2181,solr5.jyga.com:2181 -confdir /media/solr/data/solr/collection1/conf -confname defaultConf
  16、将配置文件 defaultConf 关联到 solr 数据目录下的 collection1 节点,使 collection1 节点变成虚拟节点并隐藏起来。 
[root@solr1 ~]$ java -classpath .:/media/solr/app/tomcat/webapp-solr/solr/lib/* org.apache.solr.cloud.ZkCLI -cmd linkconfig -collection collection1 -confname defaultConf -zkhost solr1.jyga.com:2181,solr2.jyga.com:2181,solr3.jyga.com:2181,solr4.jyga.com:2181,solr5.jyga.com:2181 
  17、根据上传的配置文件 defaultCon 创建一个节点
[root@solr1 ~]$ curl 'http://solr1.jyga.com:9998/solr/admin/collections?action=CREATE&name=TestCollection&numShards=2@replicationFactor=2&collection.configName=defaultConf'
  这里的action=CREATE是指操作指令为创建,name=TestCollection是指创建的节点的名称为TestCollecion,numShards=2是指有两个Shard,replicationFactor=2是指每个Shard有两个副本(数据冗余),collection.configName=defaultConf是指该节点根据配置文件defaultConf创建。注意 numShards * replicationFactor 的值必须小于SolrCloud的主机数,这里我有一个有5台,可以实现 2 * 1、2 * 2、3 * 1 共三种模式(numShards的值最小为2) 

五、部署 Nginx 1.4.3 实现负载均衡 
  用Nginx做为负载均衡器,配置简单。而且通过Nginx访问到无响应的主机时,Nginx会自动将客户的请转到另一台主机,而无需客户重新提交请求。因此对于客户来讲,只要Nginx指向的主机中有一台有响应,客户就能访问到相应的数据。 
  1、安装 nginx 1.4.3 
[root@nginx 桌面]# rpm -ivh nginx-1.4.3-1.e16.ngx.x86_64.rpmwarning nginx-1.4.3-1.el6.ngx.x86_64.rpm:Header V4 RSA/SHA1 Signature, key ID 7bd9bf62: NOKEYPreparing...            #####################################[100%]   1:nginx              #####################################[100%]------------------------------------------------------------Thanks for using nginx!Please find the official documentation for nginx here:* http://nginx.org/en/docs/Commercial subscriptions for nginx are available on:* http://nginx.com/products/------------------------------------------------------------

  2、修改配置文件 /etc/nginx/conf.d/default.conf 使得来自 80 端口的请求转发到5台solr主机的 80 端口(即项目的网址),来自 9888 端口的请求转发至5台solr主机的9888端口(即SolrCloud的网址) 
[root@nginx 桌面]# vi /etc/nginx/conf.d/default.confupstream SolrCloud{server solr1.jyga.com:9998 max_fails=3 fail_timeout=5h;server solr2.jyga.com:9998 max_fails=3 fail_timeout=5h;server solr3.jyga.com:9998 max_fails=3 fail_timeout=5h;server solr4.jyga.com:9998 max_fails=3 fail_timeout=5h;server solr5.jyga.com:9998 max_fails=3 fail_timeout=5h;}upstream JYGA{server solr1.jyga.com:80 max_fails=3 fail_timeout=5h;server solr2.jyga.com:80 max_fails=3 fail_timeout=5h;server solr3.jyga.com:80 max_fails=3 fail_timeout=5h;server solr4.jyga.com:80 max_fails=3 fail_timeout=5h;server solr5.jyga.com:80 max_fails=3 fail_timeout=5h;}server {    listen       9998;    server_name  localhost;    #access_log  /var/log/nginx/log/host.access.log  main;    location / {        root   /usr/share/nginx/html;        index  index.html index.htm;        proxy_pass http://SolrCloud;    }    #error_page  404              /404.html;    # redirect server error pages to the static page /50x.html    #    error_page   500 502 503 504  /50x.html;    location = /50x.html {        root   /usr/share/nginx/html;    }}server {    listen       80;    server_name  localhost;    #access_log  /var/log/nginx/log/host.access.log  main;    location / {        root   /usr/share/nginx/html;        index  index.html index.htm;        proxy_pass http://JYGA;    }    #error_page  404              /404.html;    # redirect server error pages to the static page /50x.html    #    error_page   500 502 503 504  /50x.html;    location = /50x.html {        root   /usr/share/nginx/html;    }}
  3、启动 nginx
[root@nginx 桌面]# nginx

  4、访问项目和SolrCloud的网址 
    http://nginx.jyga.com/jyga         #项目的网址,实际是哪台服务器在提示Web服务,不得而知 
    http://nginx.jyga.com:9998/solr    #SolrCloud的访问网址 
阅读全文
0 0
原创粉丝点击