Home > Backend Development > PHP Tutorial > Under Ubuntu1404, Tomcat8+Nginx+memcache configures server cluster session sharing

Under Ubuntu1404, Tomcat8+Nginx+memcache configures server cluster session sharing

WBOY
Release: 2016-07-29 09:15:39
Original
1019 people have browsed it

The Tomcat cluster configured before uses the simple cluster management method provided by Tomcat: . This cluster session contribution uses: org.apache.catalina.ha.session.DeltaManager, which will copy the session of a certain node to all nodes in the cluster. According to the official Tomcat documentation, this session sharing method does not work well when the cluster becomes larger. Therefore, I tried to use memcached to let the cluster share the session.

Configuration reference documents include: Click to open the link. In this link, you can find the jar package that matches your Tomcat, as well as the Tomcat configuration method. Let’s record my configuration process below.

1. Configure Nginx reverse proxy according to the content of the previous blog;

2. Install memcache under ubuntu:

You can directly use the following command to install

sudo apt-get install memcached
Copy after login
3. Edit the /etc/memcached.conf file :

This file contains the configuration of each parameter. Comment out the -l parameter here, because memcache will listen to all addresses by default, or change 127.0.0.1 to 0.0.0.0 to let memcache listen to the default address.

If you don’t do this, you can only use memcached on this machine. If other machines cannot connect, it will be meaningless.

After configuration, you can use the following command to check whether memcache can be connected, where ip is the ip address installed on the memcache host, and 11211 is the listening port of memcache.

telnet ip 11211
Copy after login

4. Edit the CATALINA_HOME/conf/context.xml file on all Tomcat nodes and add the following configuration under the tag.

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
        memcachedNodes="n1:cloud2:11211,n2:cloud3:11211"
        sticky="false"
        sessi
        lockingMode="auto"
        requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
/>
Copy after login
memcachedNodes is the node where memcache is configured and installed. cloud2 and cloud3 are host names, which must be recognized by the machine. n1 and n2 are the names of the memcached nodes we took. 11211 is the port that memcache listens on, and 11211 is the default port.

5. Add some jar packages to CATALINA_HOME/lib

The packages I use here are:

memcached-session-manager-1.8.3.jar
memcached-session-manager-tc8-1.8.3.jar
spymemcached-2.11.1.jar
Copy after login

6. Then you can start Tomcat and nginx for testing

My testing idea here is like this , use the following code to create a Servlet, and then deploy it to two tomcat servers. Start only one of the servers, and then access the load balancing server through the browser. You can view and write down the SessionID at this time on the browser. Then close this server, start another tomcat server, and then use the same address to access the load balancing server, and then check the SessionID on the browser. If the two SessionIDs are the same, it means that the SessionID is shared.

package com.cyber_space.Servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.net.Inet4Address;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class TestServlet
 */
@WebServlet("/TestServlet")
public class TestServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	public TestServlet() {
		super();
	}

	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		handle(request, response);

	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		handle(request, response);
	}

	private void handle(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setHeader("Content-type", "text/html;charset=UTF-8");
		String remoteIpString = request.getRemoteAddr() + " " + request.getRemoteHost() + " " + request.getRemoteUser();
		PrintWriter pw = response.getWriter();
		pw.println("请求来自:" + remoteIpString);
		request.getSession().setAttribute("5", 5);
		String sessionID = request.getSession().getId();
		pw.println("赋予它的SESSIONID是:" + sessionID);
		Inet4Address inet4Address = (Inet4Address) Inet4Address.getLocalHost();
		pw.println("服务器的IP地址是:" + inet4Address.getHostAddress());
	}
}
Copy after login

There is still a lot of work that can be done here that has not been done yet, such as efficient serialization configuration, etc. We will do it when we have time in the future.

Copyright Statement: This article is an original article by the blogger and may not be reproduced without the blogger's permission.

The above introduces the configuration of server cluster session sharing under Ubuntu1404, Tomcat8+Nginx+memcache, including the content. I hope it will be helpful to friends who are interested in PHP tutorials.

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template