全部产品
Search
文档中心

ApsaraDB for Memcache:Cache variabel sesi Tomcat

更新时间:Jun 30, 2025

Kluster Tomcat bertujuan untuk meningkatkan kapasitas beban dan mendistribusikan akses secara merata ke server yang berbeda. Sebagai contoh, lihat kerangka struktur yang diilustrasikan pada gambar berikut.

Kluster Alibaba Cloud umumnya dibagi menjadi dua mode: sesi terpusat sepenuhnya, di mana semua node tetap konsisten satu sama lain, dan sesi tunggal, di mana node tertentu dalam kluster ditetapkan untuk menyediakan layanan.

  1. Instal Tomcat dan JDK untuk ECS.

    Tomcat 7 dan JDK 7 digunakan dalam contoh ini. Kami sarankan Anda mengunduh Tomcat ke penyimpanan lokal terlebih dahulu, lalu mengunggahnya ke ECS setelah konfigurasi selesai.

  2. Tambahkan paket lib yang didukung Memcached ke Tomcat.

    Untuk informasi lebih lanjut tentang cara mengonfigurasi memcached-session-manager, lihat dokumen ini.

    Beberapa paket lib diunduh dalam langkah ini. Alamat unduhan disediakan dalam dokumen yang disebutkan sebelumnya. Tempatkan paket lib yang diunduh di direktori Tomcat/lib, seperti yang ditunjukkan pada gambar berikut.

    Catatan

    Catatan: Awalan setiap file msm- tidak ada di awal. Ini ditambahkan untuk kemudahan pengelolaan.

    Dengan paket-paket ini, Anda dapat mengonfigurasi koneksi Tomcat ke Memcache.

  3. Gunakan Tomcat untuk menyinkronkan sesi ke Memcache.

    Langkah ini memerlukan konfigurasi Tomcat tertentu. Dua mode konfigurasi tersedia: STICKY dan NON-STICKY.

    • STICKY: Server Load Balancer mendistribusikan semua permintaan ke node kluster yang sama berdasarkan sesi pengguna. Semua data sesi diperoleh dari Tomcat, yang mencadangkan sesi ke Memcache untuk menjamin efisiensi tinggi saat mendapatkan sesi.

    • NON-STICKY: Server Load Balancer mendistribusikan permintaan untuk setiap koneksi secara terpisah tanpa mempertimbangkan sesi pengguna. Sesi semuanya disimpan di Memcache dan semua pembacaan serta penulisan sesi terjadi di Memcache. Mode ini memerlukan akses jarak jauh ke data, sehingga efisiensinya lebih rendah, tetapi mode ini paling sesuai dengan efek yang diharapkan dari kluster atau cache terpusat.

      Di /Tomcat/conf/context.xml, edit konfigurasi untuk koneksi ke Memcache, dan tambahkan deskripsi konfigurasi berikut di bawah elemen <Context>. Berikut adalah dua mode konfigurasi Tomcat:

      Mode STICKY

      <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"  
        memcachedNodes="Alamat Memcache: 11211"  
        username="Nama instance Memcache" 
        password="Kata sandi Memcache" 
        memcachedProtocol="binary" 
        sticky="true"  
        sessionBackupAsync="true"    
        sessionBackupTimeout="1000" 
        requestUriIgnorePattern=".*\.(gif|jpg|jpeg|png|bmp|swf|js|css|html|htm|xml|json)$" 
        transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory" ></Manager>

      Mode NON-STICKY

      <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"  
        memcachedNodes="Alamat Memcache: 11211"  
        username="Nama instance Memcache" 
        password="Kata sandi Memcache" 
        memcachedProtocol="binary" 
        sticky="false"  
        lockingMode="auto"  
        sessionBackupAsync="false"    
        sessionBackupTimeout="1000" 
        requestUriIgnorePattern=".*\.(gif|jpg|jpeg|png|bmp|swf|js|css|html|htm|xml|json)$" 
        transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory" />
      Catatan

      Catatan: Pengaturan memcachedProtocol="binary" diperlukan karena nilai atribut untuk mode ekstensi memcached Tomcat adalah teks, tetapi Alibaba Cloud hanya mendukung data biner.

  4. Ubah pengaturan JVM dan NIO Tomcat.

    1. Di direktori /Tomcat/bin/, ubah pengaturan JVM dan tambahkan file setenv.sh. Tulis konfigurasi untuk optimasi.

      CATALINA_OPTS="-server -Xms3072m -Xmx3072m -Xmn1024m -XX:PermSize=96m -XX:MaxPermSize=128m -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSMaxAbortablePrecleanTime=50 -XX:+CMSPermGenSweepingEnabled"
    2. Di file /Tomcat/conf/context.xml, ubah pengaturan NIO.

      Komentari baris Connector=8080 asli dan tambahkan konfigurasi berikut, dengan mode NIO diaktifkan.

       <Connector port="8080"  
               protocol="org.apache.coyote.http11.Http11NioProtocol"   
               connectionTimeout="20000"  
               URIEncoding="UTF-8"  
               useBodyEncodingForURI="true"  
               enableLookups="false"  
               redirectPort="8443" />
  5. Buat JSP untuk memeriksa sesi.

    Buat file JSP di bawah direktori Tomcat/webapps/ROOT.

     <%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%> 
     <% 
     String path = request.getContextPath(); 
     String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 
     %> 
     <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
     <html> 
       <head> 
         <base href="<%=basePath%>">   
         <title>My JSP 'session.jsp' starting page</title> 
         <meta http-equiv="pragma" content="no-cache"> 
         <meta http-equiv="cache-control" content="no-cache"> 
         <meta http-equiv="expires" content="0">     
         <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> 
         <meta http-equiv="description" content="This is my page"> 
         <!-- 
         <link rel="stylesheet" type="text/css" href="styles.css"> 
         --> 
       </head> 
       <body> 
    
         <h1> 
         <% 
          out.println("Ini adalah (TOMCAT1), ID SESI:" + session.getId()); 
         %> 
         </h1> 
       </body> 
     </html>
  6. Unggah Tomcat yang sudah siap ke ECS.

    Setelah unggahan dimulai, Anda dapat melihat Tomcat Anda: http://yourserver:8080/session.jsp. Jika teks berikut ditampilkan, itu menunjukkan bahwa Tomcat telah berhasil terhubung ke Memcache.

     Ini adalah (TOMCAT1), ID SESI:CAC189E5ABA13FFE29FCB1697F80182B-OCS
Catatan

Catatan: Memcache dapat digunakan secara normal untuk caching sesi Tomcat ketika beban situs web rendah. Saat beban lalu lintas tinggi dan Anda mengalami kegagalan sesi yang sering, Anda harus meningkatkan aturan Memcache untuk memulihkan fungsi normal.