Tomcat5�߂�

�쐬 2003/1/6
�X�V 2003/1/8

Tomcat5�̐V�@�\�ɂ‚��ă������Ă��܂��B

�N���X�^�����O

�N���X�^�����O�Ƃ́A�V�X�e���̐M���������߂邽�߂̎d�g�݂ł��B�����̃T�[�o���N�����Ă����āA�P�‚��N���b�V�����Ă��܂����ꍇ�ł����̃T�[�o�ŏ����������p����悤�ɂ��܂��BJava��Web�A�v���P�[�V�����T�[�o�ŃN���X�^��g�ނƂ��ɖ��ɂȂ�̂́A�Z�b�V�����f�[�^�ł��B��䂪�_�E�������Ƃ��ɁA�ʂ̃T�[�o�ŏ������Ђ��‚��ɂ��Ă��A����܂ł̃Z�b�V�����f�[�^���Ȃ����Ƃɂ́A�����������p���܂���B���̂��߂ɁA�Z�b�V�����f�[�^���T�[�o�Ԃŕ������Ă����d�g�݂��Z�b�V�������v���P�[�V�����ƌ����܂��BTomcat�ɂ͂���܂ŁA�Z�b�V�������v���P�[�V�����̎d�g�݂��Ȃ��A���̓_�����p�A�v���P�[�V�����ɔ�ׂāA�@�\�I�Ɍ���肷�镔���ł����B�������ATomcat5�ɂȂ�A�Ƃ��Ƃ�Tomcat�ɃZ�b�V�������v���P�[�V�����̋@�\����������܂����B

�����ł́A�}�j���A��(Clustering)�̎菇�����ɃZ�b�V�������v���P�[�V�����������Ă݂܂��B

�����‹�

Tomcat���Q����

�{���͕������PC�Ŏ����̂��悢�̂ł����A���茳�� 1�䂵��PC���Ȃ��̂ŁA�����ł� 1��̂o�b��Tomcat�� 2�‹N�����Ď����܂��B 1��̂o�b�ŕ�����Tomcat�C���X�^���X���N������ꍇ�́A�����Tomcat��server.xml�̊e��|�[�g�ݒ���������Ȃ��悤�ɂ��炵�Ă��K�v������܂��B�����ł́A�����Tomcat��server.xml�ŋ�������|�[�g�ɑS��10000�𑫂��܂����B

�܂��ATomcat���Q�—p�ӂ��܂��B�����ł́A�ȒP�̂��߁ATomcat���t�H���_���Ƃ܂邲�ƃR�s�[���ĂQ�‚ɂ��܂���(�܂邲�ƃR�s�[���Ȃ��Ă��N���p�����[�^�ŕς���Ƃ͎v���܂���)�B

�N���X�^�����O�ݒ�

�ȉ��̐ݒ���Q�‚�Tomcat�����ōs���܂��B

�N���X�^�ݒ���s���܂��Bconf/server.xml��Cluster�v�f��Valve(ReplicationValve)�v�f�̃R�����g���͂����܂�(�ȉ��̃R�����g���͂���)�B

365�s�ڕt��

      <!-- When uncommenting the cluster, REMEMBER to uncomment the replication Valve below as well
        

        <Cluster  className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"
                  name="FilipsCluster"
                  debug="10"
                  serviceclass="org.apache.catalina.cluster.mcast.McastService"
                  mcastAddr="228.0.0.4"
                  mcastPort="45564"
                  mcastFrequency="500"
                  mcastDropTime="3000"
                  tcpThreadCount="2"
                  tcpListenAddress="auto"
                  tcpListenPort="4001"
                  tcpSelectorTimeout="100"
                  printToScreen="false"
                  expireSessionsOnShutdown="false"
                  useDirtyFlag="true"
                  replicationMode="synchronous"
        />
        -->

417�s�ڕt��

        <!--
        <Valve className="org.apache.catalina.cluster.tcp.ReplicationValve"
               filter=".*\.gif;.*\.js;.*\.jpg;.*\.htm;.*\.html;.*\.txt;"/>

        -->

���ɁA�N���X�^�����O�Ώۂɂ���Web�A�v���P�[�V������web.xml��<distributable/>�v�f��lj����܂��B�����ł́Aservlets-examples�̃T���v�����g���̂ŁAservelts-examples��web.xml���C�����܂���(description�̌�ɒlj�)�B

<web-app>

    <display-name>Servlet 2.4 Examples</display-name>
    <description>
      Servlet 2.4 Examples.
    </description>

    <distributable/>

    ....

��������|�[�g�����炷(�P��̂o�b�ōs���ꍇ)

server.xml�ŋ�������|�[�g�����炵�܂��BHTTP�|�[�g�����łȂ��A�����‚�����܂��B�Ȃ��ACluster�v�f�̃|�[�g�ɂ‚��ẮAtcpListenPort�����̃|�[�g�ԍ��݂̂��点�΂悢�ł��B���炵�Y�ꂪ����ƁA�N������JVM Bind�G���[���o�܂��B

Tomcat�̋N��

������Tomcat��startup.bat�Ȃǂ���N�����܂��B

�u���E�U�ŃA�N�Z�X

�����ł́Aservelts-examples��Sessions Example���g���܂��B�u���E�U�ŁAhttp://localhost:8080/servlets-examples/servlet/SessionExample �ɃA�N�Z�X���܂��BName��Value�ɒl�����(�����ł�key1�Avalue1�Ƃ��܂���)���A�N�G�����M�{�^���������܂��B


Tomcat�̃R���\�[��������ƁATomcat1�̕��ɕۑ����ꂽ�Z�b�V������Tomcat2�ɕ���(���v���P�[�g)����Ă���̂�������܂��B

Tomcat1(HTTP 8080�ŋN��) Tomcat2(HTTP 18080�ŋN��)
���: Average cluster serialize/send time=30 ms for 1 requests (30ms).
2004/01/07 1:57:32 org.apache.catalina.cluster.session.SimpleTcpReplicationManag
er log
���: writeObject() storing session D058BDD50BD314D512A4DD0EF8D99B51
2004/01/07 1:57:32 org.apache.catalina.cluster.session.SimpleTcpReplicationManag
er log
���:   storing attribute 'key1' with value 'value1'
2004/01/07 1:57:32 org.apache.catalina.cluster.tcp.ReplicationValve addClusterSe
ndTime
���: Average cluster serialize/send time=20 ms for 2 requests (40ms).
���: readObject() loading session D058BDD50BD314D512A4DD0EF8D99B51
2004/01/07 1:57:32 org.apache.catalina.cluster.session.SimpleTcpReplicationManag
er log
���:   loading attribute 'key1' with value 'value1'
2004/01/07 1:57:32 org.apache.catalina.cluster.session.SimpleTcpReplicationManag
er log
���: Received replicated session=ReplicatedSession id=D058BDD50BD314D512A4DD0EF
8D99B51 ref=StandardSession[D058BDD50BD314D512A4DD0EF8D99B51]
        name=key1; value=value1
        LastAccess=1073408252953

Tomcat1���_�E�����I

Tomcat1���_�E���������Ƃɂ��܂��BTomcat1�̕���shutdown.bat�ȂǂŁA�V���b�g�_�E�����܂��B�u���E�U�œ���URL�ɃA�N�Z�X����ƁA�T�[�o�[�̓_�E�����Ă���̂ŁA�G���[��ʂɂȂ�܂�(�����O�Ɠ�����ʂ��\������Ă���A����́A�����炭�u���E�U�̃L���b�V���ł�)�B

Tomcat2�ő���ɏ������p���������Ƃɂ���

Tomcat2�̕�(�|�[�g18080)�ɃA�N�Z�X����ƁA�Z�b�V�������(�����قǓ��͂���key�Avalue)���Ђ��‚����܂܁A�������p���ł��܂��B

Tomcat1�������������Ƃɂ���

Tomcat1���N�����܂��BTomcat1(�|�[�g8080)�ɃA�N�Z�X����ƁA�������Ȃ������悤�ɃZ�b�V�������Ђ��‚��ŁA�������p���ł��܂��B

�⑫����

�����ł́A��ł���Tomcat1�ATomcat2��URL��ς��܂������A���ۂ̓��[�h�o�����T�[���܂߂��N���X�^�����O��g��ŁA�N���C�A���g����́A����URL�ł��̂܂܏������p�����Ă���悤�Ɍ�����悤�ɂ���ł��傤�B

�܂��A�uTomcat2�ő���ɏ������p���������Ƃɂ���v�ŁA��ł���URL��ς��āA�����Z�b�V�����������p�����̂�����URL(localhost)�Ŏ����Ă��邩��ŁA�ʂ�PC�ŒP���ɂ�����s�����ꍇ�́AURL���ς��̂ŁA�N�b�L�[���قȂ遨�Z�b�V����ID���قȂ�̂ŁA�Z�b�V�������͂Ђ��‚��܂���B

�}�j���A���ɂ���悤�ɁATomcat�̃Z�b�V�������v���P�[�V�����́APersistenceManager�AJDBCManager�ASimpleTcpCluster���g���R�‚̕��@������܂����A�����ł͍Ō��SimpleTcpCluster���g�����@(�C���������̓]��)���s���Ă��܂��B

�܂��A���݂̃Z�b�V�������v���P�[�V�����́Aall-to-all �Ƃ����Z�b�V�����S���R�s�[�Ƃ����������g���Ă��܂��B���̕����́A�N���X�^�\���m�[�h��������ƁA�p�t�H�[�}���X�����ɂȂ�̂ŁA�����̃����[�X�ł͈قȂ�������T�|�[�g�����\��炵���ł��B5.0.18�ȍ~�ł̓Z�b�V�����Ƀo�C���h�����f�[�^�݂̂��]������܂��B

���z

Tomcat�ŃN���X�^�����O�B�B�B���p�T�[�o�͂܂��܂����@�\�ȍ��ʉ������߂���悤�ɂȂ�܂��ˁB�Ƃ����Ă��ATomcat�̃N���X�^�́A�܂��������ꂽ�΂���Ȃ̂ŁA���ۂɉ^�p�ŗ��p�ł���悤�ɂȂ�̂́A���������悩������܂���B���\�]�����Ă���T�C�g�Ȃǂ�����A��r�I�傫�ȃf�[�^�ł�����قǐ��\�򉻂͂Ȃ����ʂɂȂ��Ă܂����A����������ƌ����I�ȃV�i���I�Ŏ����Ă݂Ȃ��ƂȂ�Ƃ������Ȃ��C�����܂�(�Z�b�V�����ɑ傫�ȃf�[�^����ꂽ���ƁA���܂��܃Z�b�V�����o�C���h����悤�ȏꍇ�B�����Ŏ�������(�H)�B

���̓��[�h�o�����X���܂߂��\���������Ă݂����Ǝv���܂��B

�Q�l

IT Pro ��4�� �N���X�^�@�\�ŏ��pAP�T�[�o�[�ɔ���Tomcat�̐V��5
http://itpro.nikkeibp.co.jp/members/SI/oss/20031225/1/

���[�h�o�����X

���[�h�o�����X�Ƃ́A�T�[�o�[�𕪎U�������Ƃ��ɓ���̃T�[�o�ɕ��ׂ������肷���Ȃ��悤�ɁA���N�G�X�g��U�蕪���邱�Ƃł��B�����ł́ATomcat�̑O�ʂ�Apache�𗧂ĂāAmod_jk2���g�������[�h�o�����X���s���Ă݂܂��B

�����‹�

��̍\���Ɉȉ���lj����܂��B

mod_jk2�͖{��Apache�ƃo�[�W���������낦��ׂ��ł�(�R���p�C������)���A�����ł̓o�C�i���łň�ԃo�[�W�������߂����̂��g���Ă��܂��B�����Ԃ͉ғ������Ă��Ȃ��ł����A�ꉞ���Ȃ������Ă܂��B�Ȃ��A�����o�b�͈��\���ł��B

��{�I��Apache + Tomcat�A�g

��{�I��Apachet��Tomcat�A�g���@�ɂ‚��ẮA�����ł͐G��܂���B�ȉ��̃y�[�W���Q�l�ɂ��Ă��������B

http://www.atmarkit.co.jp/fjava/rensai2/jspservlet03/jspsevlet03_5.html

http://www.alles.or.jp/~torutk/oojava/sabbath/tomcatConnector.html

���Ƀ��[�h�o�����X�p�Ɏ኱�A�ݒ���s���܂��B

workers2.properties�̕ҏW

%Apache2%/conf/workers2.properties��ҏW���܂��BTCP�\�P�b�g�`�����l�����Q�ݒ肵�Ă��܂��B�Ȃ�apache����jkstatus��ʂ𗘗p�������̂ŁAuri�͑S��(/*)���w�肹���A�K����Web�A�v���̃p�X�Ȃ���w�肵�Ă��������B�����ł́A/servlets-examples/*���w�肵�Ă��܂��B

[status:]
[uri:/jkstatus/*]
group=status:
[shm:]
disabled=1
[channel.socket:localhost:8009]
[channel.socket:localhost:18009]
[uri:/servlets-examples/*]

�|�[�g�́ATomcat��server.xml�Ŏw�肳��Ă���Connector�̃|�[�g�ł��B�����Tomcat�ł�8009(�f�t�H���g)�ŁA���������Tomcat�ł�18009���w�肵�Ă��܂��B

tomcat1��server.xml

    <!-- Define a Coyote/JK2 AJP 1.3 Connector on port 8009 -->
    <Connector port="8009" 
               enableLookups="false" redirectPort="8443" debug="0"
               protocol="AJP/1.3" />

tomcat2��server.xml

    <!-- Define a Coyote/JK2 AJP 1.3 Connector on port 8009 -->
    <Connector port="18009" 
               enableLookups="false" redirectPort="8443" debug="0"
               protocol="AJP/1.3" />

���s����

�Q�‚�Tomcat���N��������AApache���N�����܂�(�ꉞ���̏������G���[�̏o�Ȃ�����)�BSessionExample(http://localhost/servlets-examples/servlet/SessionExample)�ȂǂɃA�N�Z�X���܂�(�ʂɉ��ł������ł�)�BApache�̓f�t�H���g��80�ԃ|�[�g�ŋN�����Ă���̂ŁA�A�N�Z�X����URL�̃|�[�g�ԍ��͏ȗ����Ă��܂��B

�u���E�U�ŁAhttp://localhost/jkstatus�ɃA�N�Z�X����ƁAmod_jk2�̏�񂪕\������܂��BSessionExample�ɃA�N�Z�X���邽�тɁA�Q�‚�Tomcat�ɏ������U�蕪�����Ă����̂��킩��܂��B


�Ȃ��A���̐ݒ�ł́A�u���E�U�ŁA�A�N�Z�X���邽�тɂQ�‚�Tomcat�ɋϓ���(���Ԃ�)����������U���Ă���̂��킩��Ǝv���܂��B�����lb_factor�̒l������(�f�t�H���g��1)������ł��Blb_factor���������قǗD��x�������Ȃ葽������������U����悤�ɂȂ�܂��B���̒l�́Aworkers.properties�Ŏw�肷�邱�Ƃ��o���܂��B

[channel.socket:localhost:8009]
lb_factor=1
[channel.socket:localhost:18009]
lb_factor=2

lb_factor��0���w�肵���ꍇ�A(Tomcat���牞�����������)�S�Ă���Tomcat�ɏ���������U���܂��B����́A�z�b�g�X�^���o�C�I�ȍ\���ɗ��p�ł��܂��B

�Z�b�V�����A�t�B�j�e�B

�T�[�u���b�g�d�l�ł́A�����Z�b�V�����̃��N�G�X�g�̏����́A�����T�[�o�[��ŏ������邱�ƂɂȂ��Ă��܂��B�‚܂�A�����N���C�A���g����̃��N�G�X�g�͓����T�[�o�[�ɏ����𕪔z����킯�ł��B���̎d�l�́A�T�[�u���b�g�R���e�i�̃��[�h�o�����X�A�t�F�[���I�[�o�[�Ȃǂ̐݌v�A��������������̂ŁA�����N���C�A���g����قړ����̃��N�G�X�g�������ꍇ�Ȃǂɂ��Ώ����₷���Ȃ�܂��B���̃��N�G�X�g�̕��U�������Z�b�V�����A�t�B�j�e�B (�X�e�B�b�L�[�Z�b�V����)�ƌĂ΂��܂��B

���mod_jk2�̓���́A���Ԃɏ�����U�蕪���Ă���̂ŁA�Z�b�V�����A�t�B�j�e�B�ł͂���܂���B�Z�b�V�����A�t�B�j�e�B�Ȏd�g�݂Ń��[�h�o�����X���s���ɂ͎��̂悤�ɂ��܂��B

server.xml��Engine�v�f��jvmRoute�ɃN���X�^���Ń��j�[�N�Ȗ��O���w�肵�܂��B

tomcat1��server.xml

    <Engine name="Catalina" defaultHost="localhost" debug="0" 
     jvmRoute="tomcat1">

tomcat2��server.xml

    <Engine name="Catalina" defaultHost="localhost" debug="0" 
     jvmRoute="tomcat2">

server.xml�ɂ�<!-- -->���̐����L�q�ɂ��A���������L�q������̂ŁA�ԈႦ�ăR�����g�̒����������Ȃ��悤��(����ł��΂炭�Y�񂾁B�n���H)�B

�ł����āAApache����workers2.properties��tomcatId(���jvmRoute�̒l)���w�肵�܂��B����ɂ��mod_jk2�������Z�b�V�������̃��N�G�X�g�͓���Tomcat�ɏ�����U�蕪���Ă���܂��B

[status:]
[uri:/jkstatus/*]
group=status:
[shm:]
disabled=1
[channel.socket:localhost:8009]
tomcatId=tomcat1
[channel.socket:localhost:18009]
tomcatId=tomcat2
[uri:/servlets-examples/*]

�Q�l

Tomcat�n���h�u�b�N�@10�� �N���X�^�����O


TOP