一、环境介绍
在CentOS系统里安装一个KVM虚拟机,然后再KVM里创建了三个内存为3G的centos虚拟机,网络采用NAT的方式。
ip分别为192.168.1.151(node1) 、192.168.1.115(node2)、192.168.1.122(node3)
配置hosts文件:
shell里输入命令:vi /etc/hosts
然后在文件里添加ip地址和对应的主机名,如果主机名不好记,最好修改下主机名(使用hostname命令查看主机名)。
这样做的目的是,输入主机名就可识别节点,而不用输入节点的ip。
上图中noSQL01.localdomain.com不需要,只需要前两部分
二、Java环境变量配置
1.在三台虚拟机里分别安装jdk1.7:
安装jdk和jre:(假设jdk和jre安装包在/root/software目录下)
rpm -i /root/software/jdk1.7.0.rpm
rpm -i /root/software/jre1.7.0.rpm
2.配置环境变量:
vi /etc/profile
(注:vi的操作命令自己百度一下,这些知识是操作linux的基本命令,以后经常会使用到)
在文件最后(unset -f pathmunge下面)添加:
JAVA_HOME=/usr/java/jdk1.7.0_71
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
PATH=$PATH:$JAVA_HOME/bin
export PATH CLASSPATH JAVA_HOME
更改之后,这些环境变量并不能马上使用,在命令行输入:
source /etc/profile
或者重启,也可得到同样的效果,这样设置的环境变量马上可以生效。
三、安装Oracle NoSQL
1.环境配置
下载Oracle NoSQL包,然后拷贝到三个虚拟机的/root/Oracle目录下(目录根据自己情况可以修改,但是建议三台虚拟机下的目录一样)。配置KVHOME和KVROOT变量:vi /etc/profile
然后在文件最后加入下内容:
KVHOME=/root/Oracle/kv3.0.14
KVROOT=/root/Oracle/KVROOT
export KVHOME
export KVROOT
同上,在命令行输入:
source /etc/proile
2.检测自己配置的环境变量是否正确
在命令行输入:
echo $JAVA_HOME
echo $KVHOME
如果输出的路径与设置的一致,则说明配置正确。
如果,提示$KVROOT(/root/Oracle/KVROOT)目录不存在,则创建这个目录:
mkdir -p $KVROOT
KVROOT这个目录后面会用到,用于存放数据库的地方。
按照上面介绍的方法,在三个虚拟机里面配置KVHOME和KVROOT。
如果不会从主机往虚拟机里传文件或文件夹,请参看我之前的博客(使用scp命令)。
3.配置数据库服务
选择一个虚拟机作为主节点,运行一下命令:java -Xmx256m -Xms256m -jar $KVHOME/lib/kvstore.jar makebootconfig -root $KVROOT \
-port 5000 -admin 5001 -host node1 -harange 5010,5020 -store-security none -capacity 1 -num_cpus 0 -memory_mb 0
如果环境配置正确,这个命令运行之后不会有什么输出。在其余两个节点上同样运行上面的命令,除了红色部分外。
紧接着在三个节点上开启SNA服务:
利用java的工具,检测ORACLE noSQL的服务是否在运行:
nohup java -Xmx256m -Xms256m -jar $KVHOME/lib/kvstore.jar start -root $KVROOT&
利用java的工具,检测ORACLE noSQL的服务是否在运行:
#jps -m
如果服务在运行就会输出服务的信息。
4.配置数据库
在node1上进入CLI环境:
java -Xmx256m -Xms256m -jar $KVHOME/lib/kvstore.jar runadmin -port 5000 -host node1
4.1 Name your store
kv->configure -name mystore
新建数据库的名称为mystore.
4.2 Create zone
kv->plan deploy-zone -name "wuhan" -rf 3 -wait
创建了一个名为wuhan的zone,zone相当于一个数据中心。rf指的是复制因子,wait指这个命令运行结束之后才能运行下一条命令,否则处于等待状态。
4.3 Craeate an administration Process
//使用 show topology命令查看zone和storage node的ID等信息
kv->plan deploy-sn -zn zn1 -host node1 -port 5000 -wait
kv->plan deploy-admin -sn sn1 -port 5001 -wait
注意,一个是5000,一个是5001.
4.4 Create a storage node pool
kv->pool create -name wuhanPool
将存储节点1放入pool中:
kv->pool join -name wuhanPool -sn sn1
4.5 创建剩余存储节点
node2:
kv->plan deploy-sn -zn zn1 -host node2 -port 5000 -wait
kv->pool join -name wuhanPool -sn sn2
node3:
kv->plan deploy-sn -zn zn1 -host node3 -port 5000 -wait
kv->pool join -name wuhanPool -sn sn3
节点ID是自增长的。
4.6 配置topology
kv->topology create -name topo -pool wuhanPool -partitions 300
kv->plan deploy-topology -name topo -wait
4.7 结束
kv->exit
四、配置过程中遇到的问题
1.java的问题
在运行java命令(如:java -Xmx256m -Xms256m -jar $KVHOME/lib/kvstore.jar makebootconfig -root $KVROOT \
-port 5000 -admin 5001 -host node1 -harange 5010,5020 -store-security none -capacity 1 -num_cpus 0 -memory_mb 0
)总是提示"main"神马的错误。这个问题是jdk的问题,估计是系统总是启动系统自带的openJDK,而不是自己安装的jdk.
-port 5000 -admin 5001 -host node1 -harange 5010,5020 -store-security none -capacity 1 -num_cpus 0 -memory_mb 0
解决方案:使用硬链接,将/usr/java/jdk1.7.0_71/bin下的命令链接到:/usr/bin下面,这样使用java命令时就是使用的自己安装的jdk的命令。
或者使用alternatives 命令来解决,具体实行方案:
1)
利用update-alternatives --install选项手工添加再可选择列表中
我们采用 update-alternatives --install 选项,赋予JDK最高的级别(设置为60),以达到添加如列表中的目的,具体如下
/usr/sbin/update-alternatives -install /usr/bin/java java /usr/java/
jdk1.7.0_71/jre/bin/java 60
2)
update-alternatives --config java
选择添加的JDK1.6配置方案
还有一种最简单的方法,就是将/usr/java/jdk1.7.0_71/bin路径添加到PATH的前面,而不是后面:
PATH=/usr/java/jdk1.7.0_71/bin:$PATH
但是这种方法只在当前的shell界面里有效。所以,这种方法并不适用。
2.防火墙的问题
运行命令:
kv->plan deploy-sn -zn zn1 -host node2 -port 5000 -wait
的时候一般会遇到host is unreachable的错误。
通过自己的尝试,在node2上运行 iptable -F命令,然后在运行上面的命令就可以了。
记得重启!!!!!
3.部署数据库过程中,中途退出adminCLI界面
部署数据库的时候,有时候不小心,或者因为出现错误,尚未deploy topology就退出了部署命令行环境。再次进入adminCLI时,运行:
“connect store -name [dbName]”总是提示说:
“you are no longer connected to store”.
或者重新配置一个数据库“configure -name [dbName]”提示说:
“This command is valid only in bootstrap/configuration mode.”
解决的办法就是关闭SNA服务,然后重启,再次进入adminCLI环境,然后连接数据库。
参考资料:安装资料,
点击这里. 这是Oracle提供的英文文档,里面有详尽的介绍,如果还有什么不明白,欢迎留言