威尼斯人线上娱乐

内存数据库之Apache,Ignite之集群应用测试

25 5月 , 2019  

集群开掘体制

在Ignite中的集群堪称是无大旨的,而且援救命令行运行和松手应用运营,所以按理说很简短。而且集群有机关开采体制认为对于懒人开垦以来太好了,抱着试1试的心态测试一下吗。

在Apache
Ignite中有三种自有的发掘体制:组播、静态IP、组播+静态IP。下边就那两种来试一试呢。

上一篇作品,我们做了内部存款和储蓄器数据库的技巧选型:

【意况认证】:
正文演示进度在同3个机器上的(也足以在三台实体机器恐怕多个的虚构机上),情形如下:

测试方法简述

测试的办法首假若经过搭建2台tomcat服务器,使用nginx来代理那贰台tomcat,tomcat服务器里有贰个web应用,此接纳内经过Apache
Ignite webSession cluster来完结集群。具体的安排与艺术能够参照《Apache
Ignite高质量布满式网格框架-初探》。

内部存款和储蓄器数据库能力选型

windows7 64位

集群发现体制测试-组播格局

安分守己Ignite的手册组播是无需做太多的安排的,默许就能够,作者在本机搭建多少个tomcat开采真就是能够完成活动开采的,运转后的确不负众望用户登陆,关闭内部一台tomcat发掘用户登6情状依然保持了。

可是小编把这种光景搬到服务器上开采就不灵了,原因或然是局域网禁止使用了组播。组播这块笔者也不是很领会就跳过了。

本文中,大家承接深入研究Apache Ignite,同偶尔候享受部分大家.Net的编码施行。

jdk1.7.0_51

静态ip开掘的有的主题素材讨论

第3,Apache
Ignite是2个内部存款和储蓄器数据组织是高质量的、集成化的以及布满式的内部存款和储蓄器平台,他能够实时地在大数量聚焦试行工作和计量,和价值观的依靠磁盘或许闪存的技术相比,质量有数据级的提高。

apache-tomcat-7.0.57-windows-x64

节点都以服务端格局

为了到达集群的目标,于是依旧利用静态IP的章程吧,上面是自身的xml配置文件:

<!-- Provide configuration bean. -->
  <bean id="cacheManager" class="org.apache.ignite.cache.spring.SpringCacheManager">
      <property name="configuration">
          <bean class="org.apache.ignite.configuration.IgniteConfiguration">
            <!-- 客户端模式设置,为true时开启客户端模式 -->
            <property name="clientMode" value="false"/>
            <property name="cacheConfiguration">
                   <bean class="org.apache.ignite.configuration.CacheConfiguration">
                       <property name="name" value="partitioned"/>
                       <property name="cacheMode" value="PARTITIONED"/>
                       <property name="backups" value="1"/>
                   </bean>
                </property>
                <property name="discoverySpi">
                        <bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
                          <property name="ipFinder">
                            <bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder">
                              <property name="multicastGroup" value="224.0.0.100"/>
                              <property name="addresses">
                      <list>
                        <value>192.168.36.116:47500..47509</value>
                        <value>192.168.49.204:47500..47509</value>
                      </list>
                    </property>
                            </bean>
                           </property>
              </bean>
            </property>             
          </bean>
       </property>
  </bean>

小编是直接在spring中做的配置,个中开发银行了三个缓存叫partitioned,用于存websession,而且采纳了PARTITIONED情势,数据会分片存款和储蓄且备份,并且设定了备份数为一,也正是说每1个session都至少有三个备份。

其它小编钦定了三个发掘器是TcpDiscoveryMulticastIpFinder,这一个发掘器能够内定组播地址和静态地址,前面已经测试过了组播地址不奏效,所以上边就加了两台tomcat的ip及端口范围。

这般布置后,开采Ignite的集群建设构形成功了,笔者不管找了3个日志:

2016-11-23 15:45:00,570 INFO
[org.apache.ignite.internal.managers.discovery.GridDiscoveryManager]

  • Topology snapshot [ver=4, servers=2, clients=0, CPUs=8,
    heap=3.4GB]

此间发掘已经有2台server连接上了,个中可用七个CPU和三.4GB内部存款和储蓄器。此时客户端通过nginx访问OK了,表达这种集群是能够的。

威尼斯人线上娱乐 1

cas-server-webapp-4.0.0.war、cas-client-core-3.2.1.jar、commons-logging.jar

节点中一个服务端三个客户端

因为Ignite能够安插为客户端格局,所以将内部1玖二.16八.4九.20四那台设置为客户端方式,然后先运维19二.16八.3六.116那台tomcat,再起步192.168.4玖.204那台。

查阅192.16八.46.11陆的日志发掘:

2016-11-23 15:52:54,454 INFO
[org.apache.ignite.internal.managers.discovery.GridDiscoveryManager]

  • Topology snapshot [ver=8, servers=1, clients=1, CPUs=8,
    heap=3.4GB]

意识早已有变为了壹台server和一台client,那注脚集群也成功了。

然后访问nginx的位置并报到连串,不奇怪。为了测试一下大家并了4九.20肆那台client机,再拜访登入的对话是维系的,那表达情形已经保存。

上边再开发银行4玖.204,测试一下闭馆server的图景,接着访问系统会发掘报错了:

2016-11-23 15:59:38,819 ERROR [root] - Failed to update web session: null
class org.apache.ignite.IgniteException: Failed to wait for retry: class org.apache.ignite.lang.IgniteFutureTimeoutException: Timeout was reached before computation completed.
    at org.apache.ignite.cache.websession.WebSessionFilter.handleCacheOperationException(WebSessionFilter.java:903)
    at org.apache.ignite.cache.websession.WebSessionFilter.handleLoadSessionException(WebSessionFilter.java:596)
    at org.apache.ignite.cache.websession.WebSessionFilter.doFilterV2(WebSessionFilter.java:522)
    at org.apache.ignite.cache.websession.WebSessionFilter.doFilterDispatch(WebSessionFilter.java:406)
    at org.apache.ignite.cache.websession.WebSessionFilter.doFilter(WebSessionFilter.java:382)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:106)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at com.hundsun.jresplus.web.servlet.SimpleOncePerRequestFilterChain$SimpleFilterChain.doFilter(SimpleOncePerRequestFilterChain.java:77)
    at com.hundsun.jresplus.web.contain.ContainFilter.doFilter(ContainFilter.java:59)
    at com.hundsun.jresplus.ui.contain.HornContainFilter.doFilter(HornContainFilter.java:46)
    at com.hundsun.jresplus.web.servlet.SimpleOncePerRequestFilterChain$SimpleFilterChain.doFilter(SimpleOncePerRequestFilterChain.java:79)
    at com.hundsun.jresplus.web.nosession.NoSessionFilter.doFilterInternal(NoSessionFilter.java:96)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:106)
    at com.hundsun.jresplus.web.servlet.SimpleOncePerRequestFilterChain$SimpleFilterChain.doFilter(SimpleOncePerRequestFilterChain.java:79)
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:106)
    at com.hundsun.jresplus.web.servlet.SimpleOncePerRequestFilterChain$SimpleFilterChain.doFilter(SimpleOncePerRequestFilterChain.java:79)
    at com.hundsun.jresplus.web.servlet.SimpleOncePerRequestFilterChain.doFilter(SimpleOncePerRequestFilterChain.java:49)
    at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:343)
    at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:260)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:957)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:620)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:722)

再次开动3陆.116服务器,开采访问页面不报错了,然则登陆会话丢失。那申明客户端形式的节点不保留数据

其中:

保证本地jdk情状已经搭建好

测试一下静态IP内定

在事先的测试中静态IP是钦定了全套的机械,那么只要只内定三个IP会如何呢?对节点运行顺序是还是不是有震慑。上边将ip保住1九二.16捌.36.116,另一个刨除掉:

<property name="addresses">
  <list>
    <value>192.168.36.116:47500..47509</value>
  </list>
</property>
  • 先运维4九.20四——>系统登六——>再起步3陆.11陆

结果运行4玖.204,发掘访问系统页面退步,再次来到的是nginx的报错页面,表明未有代理到4九.20四上。查看日志发掘:

2016-11-23 16:07:56,932 WARN [org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi] - Failed to connect to any address from IP finder (will retry to join topology every 2 secs): [/192.168.36.116:47500, /192.168.36.116:47501, /192.168.36.116:47502, /192.168.36.116:47503, /192.168.36.116:47504, /192.168.36.116:47505, /192.168.36.116:47506, /192.168.36.116:47507, /192.168.36.116:47508, /192.168.36.116:47509]

证实这种装置了静态Ip境况下一旦开采钦点的节点找不到则会阻塞,导致tomcat也不往下走了。所以说这种景况并非再测试了一向over。

  • 先运转3陆.116-——>系统登入——>再起步4九.204
    这种情势没难题,访问nginx的劳动地点能够访问到两台服务器。所以必须有一个服务器节点。而且运维顺序也务必是先运维服务器节点再开发银行客户端节点才行。

Data
Grid:
Ignite内存数据网格是1个内存内的键值存款和储蓄,他能够在分布式集群的内部存款和储蓄器内缓存数据。
它经过强语义的数额地点和关周密据路由,来下落冗余数据的噪声,使其得以节点数的线性拉长,直至几百个节点。
Ignite数据网格速度丰盛快,经过官方不断的测试,近来,他是遍及式集群中帮助事务性或原子性数据的最快的完结之一。

【软件表达】:
关联到的有的jar,还应该有cas服务的war,由于CSDN上传文件最大只扶助10M,但cas服务的war有20M左右。为了便利,倘令你们须要的话,能够沟通本人,作者发给你们。

测试服务器情势只布署静态IP1九二.168.3六.116

下面测试了多少个静态IP分服务端+客户端的格局,假诺两台都以服务端呢?会不会有怎么样影响,为了表达,把4玖.20四的格局改为服务端形式,然后配置作如下修改

 <!-- 客户端模式设置,为true时开启客户端模式 -->
            <property name="clientMode" value="false"/>


<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder">
                              <property name="multicastGroup" value="224.0.0.100"/>
                              <property name="addresses">
                      <list>
                        <value>192.168.36.116:47500..47509</value>
                      </list>
                    </property>
                            </bean>            

上面步骤:

  1. 起步4九.20肆 ->符合规律,而面能够访问
  2. 系统登入 ->符合规律,登入成功
  3. 初始3陆.11陆 ->失利,浏览系统一发布登入状态丢失
  4. 再系统登6 ->战败,不可能登入成功
  5. 关闭49.204 ->正常
  6. 再登6体系 ->平常,能够登入
  7. 开发银行49.20肆 ->平常,登录景况保持了

其1进程意识只要开掘器里只钦赐了静态IP,然则此静态IP所在的节点未有运行则无从保存数据。唯有先运维3陆.116后技巧符合规律使用啊。

故而要动用静态IP的话要在静态IP列表里写入全部的节点IP才行

SQL Grid:内部存款和储蓄器SQL网格为Apache
Ignite提供了布满式内部存款和储蓄器数据库的效果,它水平可扩张,容错并且同盟SQL的ANSI-9九标准。
SQL网格接济完全的DML命令,包蕴SELECT, UPDATE, INSERT, MEHummerH二GE以及DELETE。
同一时间辅助布满式SQL Join关联

关系邮箱
842324724@qq.com,或者QQ
842324724。

总结

发端试验下来以为Ignite的施用也许相比较轻巧的,只可是使用新东西总是会遇上有个别主题材料,所以依旧要多多领会,不然真若是用在生产条件也有毛病了再查就麻烦了。

接下去再多验证一下集群和集群的多寡复制功能,然后再测试一下双节点的性质。

RDBMS集成:
Ignite帮助与各个持久化存款和储蓄的集成,它能够连接数据库,导入格局,配置索引类型,以及自动生成全数需要的XML
OWrangler映射配置和Java领域模型POJO,那个都足以随便地下载和复制进本人的工程。
Ignite能够与其他援救JDBC驱动的关周到据库集成,包含Oracle、PostgreSQL、MS
SQL Server和MySQL

依附演示须求,用修改hosts
文件的办法增加域名最简便易行方便(这么些可怜关键,因为CAS单点登入体系是基于JAVA安全证书的
https 访问, 要使用CAS单点登入必须求布局域名,
cas是不能经过ip访问的.),编辑文件
C:\Windows\内存数据库之Apache,Ignite之集群应用测试。System32\drivers\etc\hosts 在文书末端加多上边3条音信:

威尼斯人线上娱乐 2

127.0.0.1 server.zhoubang85.com
127.0.0.1 client1.zhoubang85.com
127.0.0.1 client2.zhoubang85.com

Apache Ignite 的遵守特色有:

server.zhoubang八五.com =>> 对应布置cas
server的tomcat,那几个虚拟域名还用于服务端证雅士成

client1.zhoubang八伍.com =>> 对应配置client一客户端应用的tomcat

client二.zhoubang八五.com =>> 对应配置client二客户端应用的tomcat

  • 布满式键值存款和储蓄:Ignite数据网格是3个内部存款和储蓄器内的键值存储,遍及式的分区化的哈希,集群中各类节点都持有全部数据的壹有个别,那表示集群内节点越来越多,就足以缓存的多少越多。 Ignite通过可插拔的哈选算法来决定数据的职位,各个客户端都足以经过插入二个自定义的哈希函数来调控四个键属于特别节点,并无需任何至极的照射服务照旧命名节点。
  • 内部存款和储蓄器优化:Ignite在内部存款和储蓄器中协助二种情势的数目缓存,堆内和堆外。当缓存数据占用不小的堆,抢先了Java主堆空间时,堆外部存储器储能够制服JVM垃圾回收(gc)导致的长日子暂停,但数目照旧在内部存款和储蓄器内。
  • SQL查询:Ignite援助采用正规的SQL语法(ANSI
    9九)来查询缓存,可以动用此外的SQL函数,包含聚合和分组。
  • 布满式关联:Ignite帮助布满式的SQL关联和跨缓存的关系。
  • ACID事务:Ignite提供了八个完全符合ACID的布满式事务来担保壹致性。
    辅助开展和悲观的面世模型以及读提交、可复制读和连串化的割裂品级。
    Ignite的工作使用了二等第提交协议,适本地也拓展了许多1阶段提交的优化。
  • 同写和同读:通写情势允许更新数据库中的数据,通读情势允许从数据库中读取数据。
  • 数据库异步更新:Ignite提供了一个抉择,通过后写缓存来异步地施行数据库更新
  • 自行长久化:自动化地延续底层数据库并且生成XML的对象关联映射配置和Java领域模型POJO
  • 数据库协理:Ignite能够自动地与外表数据库集成,包蕴HighlanderDBMS、NoSQL和HDFS。

【注意】:上边二个ip都以127.0.0.一,那是干吗呢?因为自个儿的条件都以在始终不渝台机械,所以ip都以一样的,大家再把不一致的服务端和客户端应用,使用不相同域名加以不一致。三个域名对应七个利用,模拟多端!

Apache Ignite具备拾叁分上进的集群本领,安排特别灵活。

【由于CAS是根据HTTPS协议,所以需求配备服务端的tomcat,使之帮衬SSL安全磋商访问】
【表明】:当然也足以安装cas辅助http访问,那几个以往再补偿探究,上面先布署https协议.

  • 节点平等:Ignite没有master节点也许server节点,也未曾worker节点恐怕client节点,根据Ignite的见地全数节点都是千篇一律的。但是开采者能够将节点配置成master,worker或然client以及data节点。
  • 活动开采体制:Ignite节点之间会自行感知,集群可扩张性强,不要求重启集群,简单地开发银行新加盟的节点然后他们就能够活动地投入集群。那是由此一
  • 个意识体制实现的,他使节点能够相互开采对方,Ignite暗中同意使用TcpDiscoverySpi通过TCP/IP协议来作为节点发掘的贯彻,也足以配备成基于多播的恐怕依靠静态IP的,这个点子适用于分歧的情景。
  • 配置方式:Ignite可以单独运维,也得以在集群内运营,也足以将几个jar包嵌入应用内部以嵌入式的形式运作,也可以运维在Docker容器以及Mesos和Yarn等条件中,能够在物理机中运作,也得以在虚拟机中运维,那些广阔的适应性是她的三个一点都不小的优势。
  • 布局格局:Ignite的大部布局选项,都同有时间协助通过依据Spring的XML配置格局以及通过Java代码的编制程序情势进行配备。
  • 客户端和服务端:Ignite中逐条节点是同样的,不过能够依据要求将节点配置成客户端可能服务端,服务端节点插手缓存,总计,流式处理等等,而原生的客户端节点提供了远程连接服务端的力量。Ignite原生客户端能够接纳完全的Ignite
    API,包括近缓存,事务,计算,流,服务等等。
  • 全体的Ignite节点暗中认可都以以服务端格局运维的,客户端方式要求显式地启用。

【安全评释配置】:

地点大约介绍了Apache
Ignite的架商谈机能特色,未来大家以代码示例的主意,分享一下做的本领原型验证:

1 展开cmd命令窗口

1. 启动Apache Ignite

2 生成证书,在cmd窗口输入以下命令:

代码中经过调用Ignition.Start()运维三个Ignite节点。

keytool -genkey -alias ssodemo -keyalg RSA -keysize 1024 -keypass zhoubang -validity 365 -keystore c:\zhoubang.keystore -storepass zhoubang

直白施行apache.Ignite.exe也足以运维二个Ignite节点,当中间引用了Apache.Ignite.Core.dll,调用了Ignition.Start()方法

【表达】:-alias后边的外号能够自定义,-keypass内定证书密钥库的密码,
-storepass和前面keypass密码一样,不然下边tomcat 配置https 会访问战败-keystore钦命证书的地方,这里钦赐放在c盘根目录,密钥库名称能够自定义,这里是zhoubang.keystore

  • Ignite可以Host在Console和Winform中
  • Ignite信赖Oracle JDK 七及更加高版本
  • Ignite能够独立运作
  • 留存跨进度访问的场合

三 命令输入实现,回车之后,会唤醒您输入一些素材,见下图:

威尼斯人线上娱乐 3

威尼斯人线上娱乐 4

威尼斯人线上娱乐 5

Paste_Image.png

二. 开立钦点的缓存区域

【注意】:第二个让您输入的“您的名字与姓氏是怎么着”,请务必输入在C:\Windows\System32\drivers\etc\hosts文件中进入的服务端的域名。

威尼斯人线上娱乐 6

本人那边也正是server.zhoubang八5.com,为啥如此做?

三. 数目写入缓存

率先cas只能通过域名来访问,不能够透过ip访问,同期上方是生成证书,所以供给相比较严格,所以假设不那样做的话,及时最终依照教程配置完毕,cas也足以平常访问,访问2个客户端应用纵然能进来cas验证首页,但是,当输入音讯正确后,cas在回调转入你想访问的客户端应用的时候,会油然则生No
subject alternative names
present错误非常音讯,那个荒唐也便是在上头输入的率先个难题答案不是域名导致、恐怕与hosts文件配置的不等同导致。

威尼斯人线上娱乐 7

四.导出证明:

4.数据查询

在cmd窗口继续输入以下命令,导出证书:
keytool -export -alias ssodemo -keystore c:\zhoubang.keystore -file c:\ssodemo.crt -storepass zhoubang

威尼斯人线上娱乐 8

【表达】:-alias前边的称呼要与转换证书的一声令下里面包车型客车alias的称谓1致.
–keystore前边钦点证书存放的职位,这里自个儿放在C盘根目录,同一时候证书名称要与【生成证书】对应的指令里的keystore名称1致.这里是zhoubang.keystore,-file后边才crt路线,作者也钦点在c盘根目录.
–storepass的证书密码要与地点输入的密码一致.
一般来说图所示:

伍. 数额涉嫌查询

威尼斯人线上娱乐 9

威尼斯人线上娱乐 10

我们再看看c盘上面是还是不是生成crt文件:

陆.询问钦定的字段

威尼斯人线上娱乐 11

威尼斯人线上娱乐 12

5.客户端导入证书

 

在cmd窗口输入指令:

7.全文找出

keytool -import -keystore %JAVA_HOME%\jre\lib\security\cacerts -file c:\ssodemo.crt -alias ssodemo

威尼斯人线上娱乐 13

【表明】:-file指定证书的地方,也正是上一步导出证明的岗位,即c:\
ssodemo.crt
命令中钦点了JAVA_HOME,意思是将评释导入到客户端证书库,也便是jdk证书库中.因为客户端应用运营在本土,需求jdk的支撑。

八. Apache Ignite集群安插

回车之后,会让你输入密钥库口令,注意,这里的密码必须求输入changeit,无法输入上边点名的密码zhoubang,切记,不然导入客户端证书会有标题,尽管是多台机械演示,要求在每壹台湾旅客户端导入该证件,步骤都以同等的。当看到提醒“是不是信任此证书”,输入y回车就可以,见下图:(表达,命令中的-alias前边的外号能够自定义,假使出现【证书未导入,小名<***>已经存在】的不当,该意思是说客户端的密钥库中早已存在该别名证书了,重新钦点其余别称就可以.)

节点平等

威尼斯人线上娱乐 14

Ignite未有master节点恐怕server节点,也未有worker节点大概client节点,依据Ignite的视角全部节点都以均等的。不过开辟者能够将节点配置成master,worker可能client以及data节点。

【注意项】:由于是本地未有表明,证书是团结生成的,所以,务必将调换的证书导入到jre的注脚链中,不然是无能为力支撑CAS认证服务的。

活动开采体制

至此,CAS所需的评释情状,已经布署好。
上面,起先大家的CAS服务、汤姆cat、以及多客户端的安插及测试访问。

Ignite节点之间会活动感知,集群可扩张性强,不供给重启集群,轻便地开发银行新加盟的节点然后他们就能够活动地插足集群。那是经过1个开掘体制完结的,他使节点能够互相开掘对方,Ignite暗中同意使用TcpDiscoverySpi通过TCP/IP协议来作为节点开采的达成,也得以配备成基于多播的要么依附静态IP的,那么些艺术适用于不相同的境况。

部署CAS-Server相关的Tomcat

1 配置HTTPS
解压apache-tomcat-7.0.57-windows-x6四.zip,作者本地路线为E:\apache-tomcat-7.0.57,编辑E:\apache-tomcat-7.0.57\conf\server.xml,找到上边片段:

<!--
    <Connector executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
-->

去掉注释,修改成:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
    maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
    keystoreFile="C:/zhoubang.keystore" keystorePass="zhoubang"
    clientAuth="false" sslProtocol="TLS" />

其间,keystoreFile正是开创证书的路径,keystorePass就是开创证书的密码.

2 验证HTTPS配置

任何依照暗许配置不作修改,双击E:\apache-tomcat-7.0.57\bin
\startup.bat 运营tomcat
验证https是不是布置成功,小编本地使用火狐浏览器访问,在地点栏输入
https://server.zhoubang85.com:8443/
出现上边画面,其实那就标记cas服务端tomcat的https配置是未曾难点了.

威尼斯人线上娱乐 15

点击【笔者已充足精晓或然的高风险】,点击出现的【增添不相同】—【确认安全例外】,,将会油可是生上边tomcat暗许首页.tomcat已经支撑https协议访问了,一切ok!

威尼斯人线上娱乐 16

Paste_Image.png

3 部署CAS-Server
CAS-Server 下载地址:
http://www.jasig.org/cas/download
本文以cas-server-webapp-4.0.0.rar为例,解压提取cas-server-webapp-四.0.0.war文件,把改文件copy到E:\apache-tomcat-7.0.57\webapps
目下,仁同一视命名字为:cas.war。
启航tomcat,在浏览器地址栏输入:https://server.zhoubang85.com:8443/cas
,回车,现身CAS服务端的报到验证首页:

威尼斯人线上娱乐 17

首页默许是英文的,点击黑褐框的链接,切换来人中学文展现。当然,并不是怀有的地点都会化为粤语,这几个不作讲明。
【说明】:此时,CAS只是单独运维,至于登陆的用户名和密码是怎么,请查看:E:\apache-tomcat-7.0.57\webapps\cas\WEB-INF\deployerConfigContext.xml文件中有这样1段配置:

<bean id="primaryAuthenticationHandler" class="org.jasig.cas.authentication.AcceptUsersAuthenticationHandler">
    <property name="users">
        <map>
            <entry key="casuser" value="Mellon"/>
        </map>
    </property>
</bean>

以此布局是暗许静态配置用户名和密码,那就在浏览器的CAS服务的登入框中输入用户名casuser和密码Mellon,登6看看效果,就能够油但是生验证成功的页面,如下图。你也得以在文件中自个儿配置本人的用户名和密码。

威尼斯人线上娱乐 18

来看上述页面表示CAS-Server已经配备成功。

用户名和密码分明供给和数据库实行相互验证的,,那么,怎样安插呢?
【表达】:笔者本地利用的是mysql数据库。
一、必要将多少个jar文件,放到CAS服务的lib目录下,作者本地使用的jar版本分别是c三p0-0.九.1.二.jar、cas-server-support-jdbc-四.0.0.jar、mysql-connector-java-五.一.一三-bin.jar,那三个必备。将那么些jar放到E:\apache-tomcat-7.0.57\webapps\cas\WEB-INF\lib目录下。
2、修改配置,支持mysql数据库交互验证
编辑E:\apache-tomcat-7.0.57\威尼斯人线上娱乐,webapps\cas\WEB-INF\
deployerConfigContext.xml文件,你会合到有如此一段配置:

威尼斯人线上娱乐 19

讲授掉第一个entry配置,最后配置如下:

<constructor-arg>
  <map> 
    <entry key-ref="proxyAuthenticationHandler" value-ref="proxyPrincipalResolver" />
       <!-- 注释这个-->
       <!--<entry key-ref="primaryAuthenticationHandler" value-ref="primaryPrincipalResolver" />-->
    <!-- key-ref指定自己的本地数据库访问 -->
    <entry key-ref="dbAuthHandler" value-ref="primaryPrincipalResolver"/>
   </map>
 </constructor-arg>

上述配置截图:

威尼斯人线上娱乐 20

接下来再在那些xml中新加入一个bean配置,如下:

<!-- 指定c3p0数据源 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    <property name="driverClass" value="com.mysql.jdbc.Driver" />
    <property ame="jdbcUrl" value="jdbc:mysql://127.0.0.1:3306/myProject?useUnicode=true&characterEncoding=UTF-8" />
    <property name="user" value="root" />
    <property name="password" value="root
</bean>

<!-- 访问本地数据库 -->
<bean id="dbAuthHandler"
      class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler"
      p:dataSource-ref="dataSource"
      p:sql="SELECT u.`password` FROM `sec_user` u WHERE u.`account` = ?" />

要验证的是,暗青评释的剧情,作者想大家都能看的知晓,正是点名数据库驱动和连接音讯。当中,sql语句的情趣便是,依据用户名获得密码,CAS会基于你页面输入的用户名获得该用户密码,和您输入的密码举行校验,来推断输入是还是不是无误。

里面,sql中的表换到你和睦本地的表就能够,或许本身手动新建1个表,插手几条测试数据就可以。只要根据用户名询问密码就可以。
上述配置截图:

威尼斯人线上娱乐 21

明日,CAS已经支撑数据库交互验证了,服务端tomcat也支持HTTPS协议访问,未来,大家来搭建客户端,完毕多少个客户端的单点登入。这里,作者当地只行使1个tomcat客户端来测试,其实已经满足单点登入的渴求了,至少3个应用。

肆 安插CAS客户端相关的汤姆cat

首先,客户端应用是要和CAS服务端进行互动的,所以这边须要jar文件,放在客户端应用的lib目录下。分别是:cas-client-core-三.二.一.jar、commons-logging.jar

这里吧,小编就直接运用tomcat暗中认可自带的 webapps\examples
作为示范的大约web项目。作者就不去另写二个web测试的demo了。
既然如此须要1个客户端应用,则须求一个tomcat做为客户端服务器,所以,作者本地解压了贰份tomcat,作为客户端服务器,同仁一视新命名,本地路径分别为:E:\apache-tomcat-7.0.57-client1和E:\apache-tomcat-7.0.57-client2

第3,将地方一个jar分别放到E:\apache-tomcat-7.0.57-client1\webapps\examples\WEB-INF\lib目录
和E:\apache-tomcat-7.0.57-client2\webapps\examples\WEB-INF\lib目录。

配置apache-tomcat-7.0.57-client1客户端1:

修改tomcat的启动端口:
编辑E:\apache-tomcat-7.0.57-client1\conf\server.xml文件,找到如下2处内容:

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

此间请将port=”8080″修改成别的3位端口,不可能和CAS服务端的tomcat同样,不然,在始终不渝台机械上测试会出现端口占用的失实,作者修改成18080,如若是在差别的机械上,则无需配备这个。

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

那边请将port=”800九”修改成任何4个人端口,不可能和CAS服务端同样.笔者修改成1800玖
好,运转这一个tomcat,即运转E:\apache-tomcat-7.0.57-client1\bin\startup.bat,倘诺开发银行窗口中绝非出现错误,表达端口配置正确。请牢记您安顿的端口号。
浏览器输入
http://client1.zhoubang85.com:18080/examples/servlets/,请留心青莲部分域名,正是学科1初始必要配备的C:\Windows\System32\drivers\etc\hosts的域名,用于差异的客户端域名访问,回车:
好,运维那些tomcat,即运营E:\apache-tomcat-7.0.57-client1\bin\startup.bat
,若是开发银行窗口中未有出现错误,表达端口配置正确。请记住您安插的端口号。
浏览器输入
http://client1.zhoubang85.com:18080/examples/servlets/,
请注意桃红部分域名,正是课程1伊始需求配备的
C:\Windows\System32\drivers\etc\hosts
的域名,用于差别的客户端域名访问,回车:

威尼斯人线上娱乐 22

Paste_Image.png

阅览上述分界面表示apache-tomcat-7.0.57-client一的主导安装配置已经成功。
接下去须要配备最要紧的始末,让客户端应用和CAS服务连接:
编辑E:\apache-tomcat-7.0.57-client1\webapps\examples\WEB-INF\web.xml,在最下边进入如下配置:

<!-- 用于单点退出,该过滤器用于实现单点登出功能,可选配置-->
    <listener>
        <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>
    </listener>
    <!-- 该过滤器用于实现单点登出功能,可选配置 -->
    <filter>
        <filter-name>CAS Single Sign Out Filter</filter-name>
        <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>CAS Single Sign Out Filter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <filter>
        <filter-name>CAS Filter</filter-name>
        <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>
        <init-param>
            <param-name>casServerLoginUrl</param-name>
            <param-value>https://server.zhoubang85.com:8443/cas/login</param-value>
        </init-param>
        <init-param>
            <param-name>serverName</param-name>
            <param-value>http://client1.zhoubang85.com:18080</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>CAS Filter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <!-- 该过滤器负责对Ticket的校验工作,必须启用它 -->
    <filter>
        <filter-name>CAS Validation Filter</filter-name>
        <filter-class>
            org.jasig.cas.client.validation.Cas10TicketValidationFilter</filter-class>
        <init-param>
            <param-name>casServerUrlPrefix</param-name>
            <param-value>https://server.zhoubang85.com:8443/cas</param-value>
        </init-param>
        <init-param>
            <param-name>serverName</param-name>
            <param-value>http://client1.zhoubang85.com:18080</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>CAS Validation Filter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <!--
        该过滤器负责实现HttpServletRequest请求的包裹,比如允许开发者通过HttpServletRequest的getRemoteUser()方法获得SSO登录用户的登录名,可选配置。
    -->
    <filter>
        <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
        <filter-class>org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <!--
        该过滤器使得开发者可以通过org.jasig.cas.client.util.AssertionHolder来获取用户的登录名。比如AssertionHolder.getAssertion().getPrincipal().getName()。
    -->
    <filter>
        <filter-name>CAS Assertion Thread Local Filter</filter-name>
        <filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>CAS Assertion Thread Local Filter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

布局达成后,运维CAS服务端tomcat,再开发银行该客户端一的tomcat,在浏览器访问:
http://client1.zhoubang85.com:18080/examples/servlets/servlet/HelloWorldExample
看看是还是不是跳转到了CAS认证分界面,回车之后,会油不过生如下图:

威尼斯人线上娱乐 23

申明观望会发掘浏览器的地方栏中(小编用的是火狐浏览器),U路虎极光L消息是这么的:

https://server.zhoubang85.com:8443/cas/login?service=http%3A%2F%2Fclient1.zhoubang85.com%3A18080%2Fexamples%2Fservlets%2Fservlet%2FHelloWorldExample

自家想你早已驾驭怎样意思了,由于你从未登入CAS认证体系,CAS认证种类阻止到你拜访的客户端应用,首先进入到表明类别登入分界面,同期U牧马人L后边加上你想访问的地点新闻,当你登入成功后,CAS服务会转接到您刚好访问的地址,也便是:

http://client1.zhoubang85.com:18080/examples/servlets/servlet/HelloWorldExample

转折到这一个地址然后,浏览器会彰显如下内容:

威尼斯人线上娱乐 24

地点那个剧情,呈现的正是您拜访tomcat中的examples项目标3个servlet的归来结果。
此间,倘让你够细致的话,你会意识浏览器地址栏又多了二个内容,即多了三个jsessionid参数,那些正是CAS认证的法则所在,使用的是主任KIE机制。这里就十分的少说了。

配置apache-tomcat-7.0.57-client2客户端2

配置与上面的客户端配置步骤相同,其中需要注意的就是,这第二个客户端的tomcat端口要与上面的客户端和CAS服务端的端口要不一样,否则出现端口占用的错误。
主要配置如下:

威尼斯人线上娱乐 25

Port修改成28080

威尼斯人线上娱乐 26

Port修改成28009

修改编辑E:\apache-tomcat-7.0.57-client2\webapps\examples\WEB-INF\web.xml文件,出席的剧情正是上面在第3个客户端的web.xml内容千篇一律,只可是须求修改2处剧情,就是多少个url地址,
最后的配备如下:

<!-- 用于单点退出,该过滤器用于实现单点登出功能,可选配置-->
    <listener>
        <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>
    </listener>
    <!-- 该过滤器用于实现单点登出功能,可选配置 -->
    <filter>
        <filter-name>CAS Single Sign Out Filter</filter-name>
        <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>CAS Single Sign Out Filter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <filter>
        <filter-name>CAS Filter</filter-name>
        <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>
        <init-param>
            <param-name>casServerLoginUrl</param-name>
            <param-value>https://server.zhoubang85.com:8443/cas/login</param-value>
        </init-param>
        <init-param>
            <param-name>serverName</param-name>
            <param-value>http://client2.zhoubang85.com:28080</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>CAS Filter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <!-- 该过滤器负责对Ticket的校验工作,必须启用它 -->
    <filter>
        <filter-name>CAS Validation Filter</filter-name>
        <filter-class>org.jasig.cas.client.validation.Cas10TicketValidationFilter</filter-class>
        <init-param>
            <param-name>casServerUrlPrefix</param-name>
            <param-value>https://server.zhoubang85.com:8443/cas</param-value>
        </init-param>
        <init-param>
            <param-name>serverName</param-name>
            <param-value>http://client2.zhoubang85.com:28080</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>CAS Validation Filter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <!--
        该过滤器负责实现HttpServletRequest请求的包裹,比如允许开发者通过HttpServletRequest的getRemoteUser()方法获得SSO登录用户的登录名,可选配置。
    -->
    <filter>
        <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
        <filter-class>org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <!--
        该过滤器使得开发者可以通过org.jasig.cas.client.util.AssertionHolder来获取用户的登录名。比如AssertionHolder.getAssertion().getPrincipal().getName()。
    -->
    <filter>
        <filter-name>CAS Assertion Thread Local Filter</filter-name>
        <filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>CAS Assertion Thread Local Filter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

测试注明SSO

至此,3个客户端也曾经配备达成,运行配置好的七个tomcat分别为:CAS服务端tomcat、三个客户端tomcat
小编本地路线分别为:
服务端tomcat:E:\apache-tomcat-7.0.57

    客户端1:E:\apache-tomcat-7.0.57-client1
    客户端2:E:\apache-tomcat-7.0.57-client2

主导的测试

走访客户端1—-> 跳转到cas server 验证 —-> 呈现客户端①的施用
—->新开选项卡访问客户端2 —-> 展现客户端二应用 —-> 注销cas
server —-> 展开客户端1/客户端二 —-> 重新跳转到cas server 验证.

下边截图,总局方所示举办测试,看看是否与地点说的流水生产线同样:
第二,展开火狐浏览器,地址栏输入:

http://client1.zhoubang85.com:18080/examples/servlets/servlet/HelloWorldExample

回车,将谋面世CAS认证分界面:

威尼斯人线上娱乐 27

输入用户名和密码,登6成功后,展现的分界面:

威尼斯人线上娱乐 28

Paste_Image.png

重复张开一个选项卡,地址栏输入:

http://client2.zhoubang85.com:28080/examples/servlets/servlet/HelloWorldExample

回车,将直接呈现客户端二分界面,未有重新登陆,浏览器呈现分界面:

威尼斯人线上娱乐 29

传说地点呈现的分界面,遵照普通想逻辑,当访问客户端二的时候,应该会被CAS拦截,转到CAS认证服务的分界面,不过结果却直接展现客户端二的分界面,原因正是因为您在拜访客户端1的时候已经报到认证过了,CAS会在您浏览器中注入COOKIE,记录您的证实凭证,倘使你的浏览器未有关闭恐怕退出的话,当您拜访客户端贰应用的时候,CAS检查测试到表明的证据,所以,就直接显示了客户端二的界面,大致的辨证管理流程正是如此了,小编这里说的可比浅显,其实CAS照旧有无数尤为千头万绪的操作在中间的,有意思味的爱人本人稳步研究吗。

那边,其实就曾经表达,CAS单点登入种类现已搭建实现!运行1切符合规律!

上面,大家新开垦二个选项卡(也可在当下页面包车型客车地址栏输入),在浏览器地址栏中输入

https://server.zhoubang85.com:8443/cas/logout

回车呈现:

![](http://upload-images.jianshu.io/upload_images/1809511-b7423faa00980fa0.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

上述表示 认证注销成功,此时一旦再拜访 :

http://client1.zhoubang85.com:18080/examples/servlets/servlet/HelloWorldExample
或
http://client2.zhoubang85.com:28080/examples/servlets/servlet/HelloWorldExample

都将会跳转到CAS服务重新进行验证。

【十分错误计算】:

1、假如中途现身了以下至极错误:sun.security.validator.ValidatorException:
PKIX path building failed:
sun.security.provider.certpath.SunCertPathBuilderException: unable to
find valid certification path to requested target

缘由分析:其实原因便是,你在地点的第伍步实行证件导入到jre证书链的时候(具体命令如下:keytool
-import -keystore %JAVA_HOME%\jre\lib\security\cacerts -file
c:\ssodemo.crt -alias
ssodemo),ssodemo.crt路径不对导致,检查下下c:\ssodemo.crt否有空格,可能回顾下是不是实践了这几个手续。

到此,SSO之CAS单点登入种类现已搭建完毕!
此间小编借鉴一篇小说,提供大家学习:
http://www.micmiu.com/enterprise-app/sso/sso-cas-sample/

当然,CAS认证之后,至于在后台怎么着收获到登入的用户新闻,这里自个儿就不作描述了。上边分享的小说最终有关照的授课。其余的文化,自身慢慢学习和商量吗。

接待访问 JAVA才具分享
www.2b2b92b.com

安插格局

原来的文章链接:http://www.cnblogs.com/zhoubang521/p/5200407.html

Ignite可以独自运行,也得以在集群内运转,也得以将几个jar包嵌入应用内部以嵌入式的格局运转,也足以运作在Docker容器以及Mesos和Yarn等条件中,能够在物理机中运营,也得以在虚拟机中运维,这一个广阔的适应性是他的3个异常的大的优势。
安插格局
Ignite的绝大多数计划选项,都同一时候支持通过遵照Spring的XML配置格局以及经过Java代码的编制程序形式开始展览安插,这几个也是个关键的长处。

玖. 客户端和服务端

Ignite中逐条节点是同样的,不过能够依据必要将节点配置成客户端恐怕服务端,服务端节点加入缓存,总括,流式管理等等,而原生的客户端节点提供了远程连接服务端的力量。Ignite原生客户端能够采用完全的Ignite
API,包蕴近缓存,事务,总括,流,服务等等。

 威尼斯人线上娱乐 30

代码以Client情势运营Ignite

威尼斯人线上娱乐 31

Client/Server架构,带来了比相当的大的问题!!

  • 各类使用Ignite的主机都要设置JDK,同时运维3个Ignite Client节点
  • 开辟、运转、管理资本异常高

10. Apache Ignite REST API

Apache Ignite 提供了Restful
API,辅助对缓存的读、写、试行任务、获取各样目的等。
启用HTTP连接:将libs\optional\ignite-rest-http
拷贝到libs\ignite-rest-http即可。

Get or create cache

Add

Get

SQL Query

 

上述便是一切Apache Ignite的能力分享。

 

周国庆

2017/8/26


相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图