浏览 3050 次
锁定老帖子 主题:sequoia 的详细安装步骤
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-09-28
最后修改:2008-12-02
最好把你的JDK安装到一个具体路径,这个路径最好不要有空格(比如 C:\Program Files中间就有空格),具体为什么中间不要空格,你可以试下就知道了,O(∩_∩)O sequoia解析路径的时候遇到空格就会卡住。好了废话不多说,进入安装: 到 http://sequoia.continuent.org 上下载 sequoia-x.y-bin.tar.gz(我用的是sequoia 2.10.10的版本) 然后 java -jar sequoia-x.y-bin.tar.gz 一路图形界面安装,嘿嘿,你要想命令行安装,自己搞去,我只来最简单的,(命令行安装要配置一个环境变量SEQUOIA_HOME),好了,安装完毕。 别急哈,在安装完了我再告诉你一些东西(嘿嘿,生米先煮成熟饭再说)。首先要明白几个点,因为是数据库中间件,你这里肯定会有几个节点,比如node1数据库 mysql,node2 数据库 oracle ..... 你控制节点,或者说是控制服务器就叫nodeN吧,对于数据库服务器不用装sequoia,你想用哪台机器控制这个中间件就在哪台机器上安装sequoia,好了,这里我用我自己电脑和另外一台电脑来完成这个操作,控制台在我电脑里。我电脑ip:192.168.61.114 另外一台电脑地址192.168.61.133(其实这个地址没用,只不过是数据库连接地址罢了)。 对于sequoia 的启动一般是通过bin里的console.bat启动的,所以我要先讲下创建一个.bat文件来启动我们的集群,嘿嘿,配置一步一步来啊,跟我的步骤你会明白文件是如何加载的,我们先在demo文件夹里创建一个a.bat @echo off title Sequoia RAIDb-1 demo echo ****************************************************** echo ****************************************************** echo ** ** echo ** Please press a key when hsqldb servers are ready ** echo ** ** echo ****************************************************** echo ****************************************************** SET SEQUOIA_HOME="d:\sql\sequoia" :begin cd "%SEQUOIA_HOME%\bin" echo "Waiting for mysql servers to finish start up" echo "Starting Controller" start /B controller.bat -f ..\config\controller\controller-mysqlserver.xml :end 注意红色的那个文件,ok先记住这个名字,看好路径,这个批处理文件的意思就是加载这个xml文件,好了 这个文件我们还没有建立,我们就到config\controller里面创建这个文件controller-mysqlserver.xml具体内容如下: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE SEQUOIA-CONTROLLER PUBLIC "-//Continuent//DTD SEQUOIA-CONTROLLER 2.10.10//EN" "http://sequoia.continuent.org/dtds/sequoia-controller-2.10.10.dtd"> <SEQUOIA-CONTROLLER> <Controller ipAddress="127.0.0.1" port="25322"> <JmxSettings> <RmiJmxAdaptor port="1090"/> </JmxSettings> <VirtualDatabase configFile="mysqlserver-raidb1-distribution.xml" virtualDatabaseName="myDB" autoEnableBackends="true" checkpointName="Initial_empty_recovery_log"/> </Controller> </SEQUOIA-CONTROLLER> 再次注意这个红色的字体,对鸟,从字面意思我们就可以理解是虚拟数据库的配置文件,啥?你问我哪来的虚拟数据库,对不起,看介绍吧。注意这个配置文件是很重要的~好了,我们现在就前往config\virtualdatabase创建我们这个虚拟数据库配置文件mysqlserver-raidb1-distribution.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE SEQUOIA PUBLIC "-//Continuent//DTD SEQUOIA 2.10.10//EN" "http://sequoia.continuent.org/dtds/sequoia-2.10.10.dtd"> <SEQUOIA> <VirtualDatabase name="myDB"> <Distribution> <MessageTimeouts/> </Distribution> <Backup> <Backuper backuperName="Octopus" className="org.continuent.sequoia.controller.backup.backupers.OctopusBackuper" options="zip=true"/> </Backup> <AuthenticationManager> <Admin> <User username="admin" password=""/> </Admin> <VirtualUsers> <VirtualLogin vLogin="user" vPassword=""/> </VirtualUsers> </AuthenticationManager> <DatabaseBackend name="localhost1" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/clusterdb" connectionTestStatement="select now()"> <ConnectionManager vLogin="user" rLogin="root" rPassword="zyx808"> <VariablePoolConnectionManager initPoolSize="10" minPoolSize="5" maxPoolSize="50" idleTimeout="30" waitTimeout="10"/> </ConnectionManager> </DatabaseBackend> <DatabaseBackend name="localhost2" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://192.168.61.133:3306/clusterdb" connectionTestStatement="select now()"> <ConnectionManager vLogin="user" rLogin="test1" rPassword="abc"> <VariablePoolConnectionManager initPoolSize="10" minPoolSize="5" maxPoolSize="50" idleTimeout="30" waitTimeout="10"/> </ConnectionManager> </DatabaseBackend> <RequestManager> <RequestScheduler> <RAIDb-1Scheduler level="passThrough"/> </RequestScheduler> <LoadBalancer> <RAIDb-1> <WaitForCompletion policy="first"/> <RAIDb-1-LeastPendingRequestsFirst/> </RAIDb-1> </LoadBalancer> <RecoveryLog driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/clusterdb" login="root" password="zyx808"> <RecoveryLogTable tableName="RECOVERY" logIdColumnType="BIGINT NOT NULL" vloginColumnType="VARCHAR(20) NOT NULL" sqlColumnName="sqlsrc" sqlColumnType="TEXT NOT NULL" sqlParamColumnType="TEXT" extraStatementDefinition=",PRIMARY KEY (log_id)"/> <CheckpointTable tableName="CHECK_POINT" checkpointNameColumnType="VARCHAR(127) NOT NULL"/> <BackendTable tableName="BACKEND" databaseNameColumnType="VARCHAR(50) NOT NULL" backendNameColumnType="VARCHAR(50) NOT NULL" checkpointNameColumnType="VARCHAR(127) NOT NULL"/> <DumpTable tableName="SEQUOIA_DUMP" dumpNameColumnType="TEXT NOT NULL" dumpDateColumnType="DATETIME" dumpPathColumnType="TEXT NOT NULL" dumpFormatColumnType="TEXT NOT NULL" checkpointNameColumnType="TEXT NOT NULL" backendNameColumnType="TEXT NOT NULL" tablesColumnType="TEXT NOT NULL"/> </RecoveryLog> </RequestManager> </VirtualDatabase> </SEQUOIA> 网上大多文章就不说这个重要的配置文件是怎么配的,我要重点说下,为后来的人指个路。 配置文件前面不多说,就说DatabaseBackend节点他是具体数据库的地址和驱动名称(这个驱动的jar包记得要放到driver里),vlogin就表示是虚拟数据库登陆你实际数据的用户,rlogin就是你实际数据库的用户啦,好了,我现在配置了2个mysql的数据库,一个是我自己电脑上的,一个是133上的。下面最重要的一个节点就要开始啦RecoveryLog节点,这个节点是为你以后各个数据库之间同步,日志等等做重要作用的,所以我们不可马虎哦。下面几个从名字上看你也能看的出是什么意思 就是他会自动生成这些表,这里面注意你的数据库的不同采用具体数据的定义方式,比如int,int(4),varchar,varchar(20)等等吧要注意他们的关键字等,如果你用mysql 你就要按我的这个比较好,sqlColumnName要加上因为生成的字段有一个叫sql的,你不命名就会出错的,还有就是sqlParamColumnType 就直接用text就可以啦,就不要加not null 啦,要不然也会出错的哦,至少在我这里就是这样啦。好了这个文件配置完了。那我们是不是应该松扣气那?实践证明,不要松啊,松了就等死吧。 在我们config文件夹下有一个hedera_jgroups.properties他的作用就是要读取sequencer.xml文件,可是不知道你们发现没有,即使你配置了sequencer.xml文件也会出错 <!-- Total order protocol stack using the SEQUENCER protocol Version: $Id: sequencer.xml,v 1.1 2006/06/26 13:08:47 emmanuel Exp $ --> <config> <UDP bind_addr="192.168.61.114" mcast_port="45566" mcast_addr="228.8.8.9" tos="16" ucast_recv_buf_size="20000000" ucast_send_buf_size="640000" mcast_recv_buf_size="25000000" mcast_send_buf_size="640000" loopback="false" discard_incompatible_packets="true" max_bundle_size="64000" max_bundle_timeout="30" use_incoming_packet_handler="true" use_outgoing_packet_handler="false" ip_ttl="2" down_thread="false" up_thread="false" enable_bundling="true"/> <PING timeout="2000" down_thread="false" up_thread="false" num_initial_members="3"/> <MERGE2 max_interval="10000" down_thread="false" up_thread="false" min_interval="5000"/> <FD_SOCK down_thread="false" up_thread="false"/> <!--VERIFY_SUSPECT timeout="1500" down_thread="false"/--> <pbcast.NAKACK max_xmit_size="60000" use_mcast_xmit="false" gc_lag="0" retransmit_timeout="100,200,300,600,1200,2400,4800" down_thread="false" up_thread="false" discard_delivered_msgs="true"/> <UNICAST timeout="300,600,1200,2400,3600" down_thread="false" up_thread="false"/> <pbcast.STABLE stability_delay="1000" desired_avg_gossip="50000" down_thread="false" up_thread="false" max_bytes="400000"/> <VIEW_SYNC avg_send_interval="60000" down_thread="false" up_thread="false" /> <pbcast.GMS print_local_addr="true" join_timeout="3000" down_thread="false" up_thread="false" join_retry_timeout="2000" shun="true" handle_concurrent_startup="true" /> <SEQUENCER down_thread="false" up_thread="false" /> <FC max_credits="2000000" down_thread="false" up_thread="false" min_threshold="0.10"/> <!-- FRAG2 frag_size="60000" down_thread="false" up_thread="true"/ --> <!-- pbcast.STATE_TRANSFER down_thread="false" up_thread="false"/--> </config> 我们要注意的就是红字的部分,这个是我们的控制台的地址也就是我自己的ip地址,介绍上说把这个配置一下就可以了,我按上面说的把这个配置了下结果还是发现出错,而且出个莫名其妙的192.168.5.1 那这个错误信息到底从哪里来?google了下,从他们的邮件列表里我发现了一个问题,就是sequoia底层用到了jgroups的udp的ip多播,而他们是直接把jgroups的包给放到了lib里面,里面有jgroups的各种配置,就在这个配置里有192.168.5.1,好了问题原因找到,我们就解开jgroups的核心包,把里面的sequencer.xml文件给替换了,问题解决! 上面说的比较繁杂,而且并没有以前网上的那种按部就班的方式,他们都说的太笼统了,而且并没有描绘他们遇到的问题。 那么好了我们已经把这个中间件给安装好了,我们就用我们的a.bat来启动吧,一路顺风,写个小程序测试下吧(哈哈,网上抄的,略有改动,保证最新版)GenerateSampleData.java import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.Statement; public class GenerateSampleData { public void generate() { Connection conn = null; Statement stmt = null; ResultSet rs=null; try { Class.forName("org.continuent.sequoia.driver.Driver").newInstance(); String url = "jdbc:sequoia://localhost:25322/myDB"; conn = DriverManager.getConnection(url, "user", ""); try { stmt = conn.createStatement(); stmt.executeUpdate("insert into user(id,name) values(9,'c')"); System.out.println("Update Record Success."); } catch (Exception ex) { ex.printStackTrace(); } finally { try { if(rs!=null) rs.close(); if (stmt != null) stmt.close(); if (conn != null) conn.close(); } catch (Exception e) { e.printStackTrace(); } } } catch (Exception e) { e.printStackTrace(); } } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub GenerateSampleData g = new GenerateSampleData(); g.generate(); } } 将就着用吧,主要是给你们看驱动和连接地址,我们先吧这个程序运行下,连接2个地方的真实数据库看看结果(user表就是一个id int ,一个name varchar(50) 字段,具体语句你自己也会建立吧),好了发现两个表里都有值,我们成功了,我们下面再来测试下断开其中一个节点的情况,好了cmd进入sequoia的安装目录里的bin ,运行 console.bat 敲进 admin myDB 他会让你输入用户名admin和密码(空), 然后我们disable localhost2 再运行程序,我们进不同的数据库看看,发现自己的数据库又多了一条数据,再看看133那台,没有数据,好了,我们再敲进 enable localhost2 什么都不动,我们直接进入133看看,嘿嘿,数据出来了吧,说明我们配置完全成功了~~~~~~ 讲的比较片面,具体更多功能请看介绍和api~~~~~ 留个课下作业,在我关闭这个中间件的时候该怎么关闭那?直接关?NO NO NO 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |