为什么要用分布集群?
分布集群避免了单点服务器的一些弊端,当单点服务器出现故障时,将直接影响整个系统的使用,从而带来巨大的损失
传统单点服务器存在以下弊端:
1.处理能力有限,容易出现高并发问题
2.容错率低,当服务器出现故障时,会导致整个系统无法使用
3.单点服务器运算能力有限,逐渐无法满足高性能服务器需求
即三高问题,高并发,高可用,高性能。这也是为什么我们需要使用分布集群的重要原因
先配置一台服务器
前置工作:安装jdk和tomcat
1、安装solr
rz选择导入solr的文件
新建一个solr文件夹
mkdir solr
解压至solr文件夹下 tar zxvf solr文件名 -C solr
采用tomcat启动 将solr.war复制到apache下的webapp下(solr.war在解压的solr文件夹下的example下的webapps 文件夹下)
解压solr.war 并放在该目录下的solr文件夹下
命令 unzip -oq solr.war -d solr 并删除war包防止其重新解压
导入运行所需要的jar包
jar包在solr的example的lib里面
/usr/local/solr/solr-4.10.2/example/solr/lib/ext里面
我们需要将其拷贝到tomcat下的solr中
cd /usr/local/solr/solr-4.10.2/example/solr/lib/ext
cp * /usr/local/tomcat文件夹/webapps/solr(solr.war解压存放的目录)/WEB-INF/lib
以上步骤完成后需要进入catalina.sh指定solr的home目录
cd /usr/local/tomcat文件夹/bin(windows中修改的配置文件时catalina.bat linux 则是catalina.sh)
vi catalina.sh 进入编辑模式
添加 _OPTS="-Dsolr.solr.home=/usr/local/solr/solr-4.10.2/example/solr"以指定solr 的home目录
接下来是配置zookeeper
首先自然是解压zookeeper文件
我的zookeeper目录在/usr/local/zookeeper-3.4.5
进入zookeeper配置文件夹
cd /usr/local/zookeeper-3.4.5/conf
zoo的配置文件 zoo_sample.cfg
但它是示例,因此我们需要重新拷贝一份重命名为zoo.cfg
而zookeeper会默认加载zoo.cfg文件
dataDir 数据目录
添加以下内容
zookeeper集群
dataDir=/usr/local/ zookeeper-3.4.5/data //data所在目录
dataLogDir=/usr/local/ zookeeper-3.4.5/log //日志文件所在目录
server.1=192.168.8.100:2888:3888/指定zookeeperid/2888心跳接口(是否存活)/3888数据交互接口
server.2=192.168.8.101:2888:3888
server.3=192.168.8.102:2888:3888
zookeeper默认没有data文件夹和log文件夹,因此需要我们自己创建
mkdir-m 755 data
mkdir-m 755 log我们准备创建三个服务器 所以指定三个服务器分别为1,2,3 后面是ip地址根据自己的ip地址相应作更改
然后我们需要在data文件夹中创建myid文件指定id(很重要)克隆的虚拟机也别忘了改 每台虚拟机的id不同 按照上面server相对应 比如现在server.1=192.168.8.100
则在创建的myid中添加1
配置zookeeper的环境变量,可以在任何位置使用zookeeper命令
vi /etc/profile
在JavaHOME下添加export ZOOKEEPER_HOME=/usr/local/zookeeper-3.4.5
在PATH下添加:$ZOOKEEPER_HOME/bin 如下所示
JAVA_HOME=/usr/local/jdk1.7.0_71
export ZOOKEEPER_HOME=/usr/local/zookeeper-3.4.5
PATH=$PATH:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin
CLASSPATH=./:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
保存退出 并source /etc/profile生效
至此第一台服务器配置完成
因为使用的是虚拟机 我们可以复制虚拟机
注意由于虚拟机为克隆所得 所以克隆的网络适配器是一样的 所以在设置高级里需要重新生成一个mac地址 保存该mac地址
启动克隆机 修改文件配置
vi /etc/sysconfig/network-scripts/ifcfg-eth0
修改mac地址以及ip地址
cd /etc/udev/ 设备
有个文件夹 rules.d 是网卡文件夹
其中70-persistent-net.rules为网卡配置文件
由于是克隆的 所以需要删除 让其自动再生成一个
reboot 重启一下
-DzkHost=192.168.8.10:2181,192.168.8.11:2181,192.168.8.12:2181 //2181 客户端口 在catalina.sh中设置
_OPTS="-Dsolr.solr.home=/usr/local/solr/solr-4.10.2/example/solr -DzkHost=192.168.8.100:2181,192.168.8.101:2181,192.168.8.102:2181"
关闭防火墙
1. 永久性生效
开启:chkconfig iptables on
关闭:chkconfig iptables off
2. 即时生效,重启后失效
开启:service iptables start
关闭:service iptables stop
zkServer.sh start 启动
zkServer.sh status 查看状态
zkCli.sh 默认连接本机zookeeper服务(先启动,再连接)
zkCli.sh -p 端口( 不写-p 默认本机)
修改solr配置文件
cd /usr/local/solr/solr-4.10.2/example/solr/ 目录
solr.xml
<solrcloud>
<str name="host">192.168.8.100</str>
<int name="hostPort">8080</int>
<str name="hostContext">${hostContext:solr}</str>
<intname="zkClientTimeout">${zkClientTimeout:30000}</int>
<boolname="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>
</solrcloud>将配置文件传到zookeeper中去(开启zkServer.sh 连接zookeeper)
脚本命令目录
/usr/local/solr/solr-4.10.2/example/scripts/cloud-scripts
配置文件目录
/usr/local/solr/solr-4.10.2/example/solr/collection1/conf
sh /usr/local/solr/solr-4.10.2/example/scripts/cloud-scripts/zkcli.sh -zkhost 192.168.8.100:2181,192.168.8.101:2181,192.168.8.102:2181 -cmd upconfig -confdir /usr/local/solr/solr-4.10.2/example/solr/collection1/conf -confname solrconf
启动tomcat
网页打开http://192.168.8.100:8080/solr/