Skip to Content

Intro

Hi everyone, recently I just installed SAP HANA SPS09 and wanted to try something new. Since multitenant database containers (MDC) is a major feature in SPS09, I installed SAP HANA in single container mode and multiple containers mode as well. As you know, I’m a fan of SAP HANA, especially XS, so after adding both SAP HANA systems into SAP HANA Studio, I just visited XSEngine welcome pages directly. Just like after installing Apache Tomcat, you’ll first visit the welcome page to check if the web server is running correctly.

For the single container mode, everything looked fine. But for the multiple containers mode, I failed to visit the welcome page… It seemed like hide and seek game in XSEngine. So where is XSEngine hidden and how can I visit the welcome page? ๐Ÿ˜• I did some research and wanted to share with you my experience exposing HTTP access to multitenant database containers in SAP HANA SPS09.

Single container mode (instance 00)

Everything looked fine just like before.

/wp-content/uploads/2014/12/1__604450.png

Since the instance number is 00, I visited port number 8000. XSEngine is up and running.

/wp-content/uploads/2014/12/2__604448.png

Multiple containers mode (instance 01)

I logged on to system database container, so that’s SYSTEMDB as you can see in the following screen shot. First of all, you cannot find the ‘xsengine’ service which you can find in the single container mode.

/wp-content/uploads/2014/12/3__604548.png

Since the instance number is 01, I visited port number 8001. The welcome page did not appear. ๐Ÿ™ Why??? ๐Ÿ˜•

/wp-content/uploads/2014/12/4__604549.png

Configure HTTP access to multiple containers

The first idea came to my mind was searching the solution in SAP HANA Administration Guide. Bingo! You can find the solution from Configure HTTP Access to Multitenant Database Containers and follow the procedure. Here I won’t explain the procedure again, but I’ll give some screen shots and highlight some key points for you.

Before jumping into the configuration part, I highly recommend you to first have a look at Multitenant Database Containers – SAP HANA Administration Guide – SAP Library in order to have an overview of MDC. From the architecture diagram below, you can see some points:

1. The internal web dispatcher, which is introduced as a service inside SAP HANA SPS09, accept all HTTP requests and dispatch them to different databases. That’s why you’ll see in the following part, most configurations take place in webdispatcher.ini.

2. Only index server in tenant database by default

3. For system database, the XS server is embedded in the name server. That’s why you cannot find the ‘xsengine’ service in the landscape.

4. For tenant database, the XS server is embedded in the index server.

6.PNG

Configure HTTP access to SYSTEMDB

1. Logged on to system database container -> Administration -> Configuration -> webdispatcher.ini -> profile -> change wdisp/system_0 on the sytem layer

  • Changing the port number from 8 to 14, 3<instance>14 is the internal port number reserved for the embedded XS server of the system database.
  • Replacing the default SRCURL=/ parameter with the SRCVHOST parameter, specifying the fully qualified domain name (FQDN) of the physical host as the value

/wp-content/uploads/2014/12/5__604565.png

2. Visit the welcome page. XSEngine is up and running. ๐Ÿ˜†

/wp-content/uploads/2014/12/7__604566.png

Configure HTTP access to DB1

What about creating a tenant database and visiting its XSEngine? Let’s give it a shot.

1. Logged on to system database container -> SQL console -> run the following SQL


CREATE DATABASE DB1 SYSTEM USER PASSWORD Manager1;










For better understanding, I logged on to DB1 and you can see only the index server belongs to DB1 as we discussed in the architecture diagram. Since the XS server is embedded in the index server, you cannot find it as well.

/wp-content/uploads/2014/12/9__604622.png

2. Logged on to system database container -> Administration -> Configuration -> webdispatcher.ini -> profile -> add wdisp/system_1 on the system layer

By default, new tenant databases are assigned 3 port numbers, one for each of the following:

  • Internal communication (3<instance>40-3<instance>97)
  • SQL (3<instance>41-3<instance>98)
  • HTTP (3<instance>42-3<instance>99)

We did not assign the port number when we created the tenant database DB1, so 30140(internal communication), 30141(SQL) and 30142(HTTP) these three port numbers are assigned to DB1. That’s why we configure the port number to 3$(SAPSYSTEM)42 in the following screen shot.

/wp-content/uploads/2014/12/8__604567.png

3. Add the tenant database alias name to DNS. As I’m not able to do that, I just add an entry to the local “hosts” file on Windows. You can find the path in the following screen shot.

/wp-content/uploads/2014/12/10__604614.png

4. Visit the welcome page. XSEngine is up and running!

11.PNG

Add a dedicated ‘xsengine’ service and configure HTTP access

Don’t like the embedded XS server? What about adding a dedicated ‘xsengine’ service? Now let’s create another tenant database DB2 and add a dedicated XS server. You can find details from Add a Service to a Tenant Database – SAP HANA Administration Guide – SAP Library.

1. Logged on to system database container -> SQL console -> run the following SQL


CREATE DATABASE DB2 SYSTEM USER PASSWORD Manager2;





Identical to DB1, only the index server belongs to DB2, still no ‘xsengine’ service. Besides, you can imagine 30143(internal communication), 30144(SQL) and 30145(HTTP) these three port numbers are assigned to DB2.

/wp-content/uploads/2014/12/12__604623.png

2. Run the following SQL to add the dedicated ‘xsengine’ service. Replace <hostname> with yours.


ALTER DATABASE DB2 ADD 'xsengine' AT LOCATION '<hostname>:30146';





If you use an occupied port number, the following error will appear.

13.PNG

3. Now you can find the dedicated ‘xsengine’ service. Keep in mind 30146(internal communication), 30147(SQL) and 30148(HTTP) are assigned to it.

/wp-content/uploads/2014/12/14__604640.png

4. Configure HTTP access, add wdisp/system_2 on the system layer, use port number 3$(SAPSYSTEM)48

/wp-content/uploads/2014/12/15__604641.png

5. Add the tenant database alias name to DNS.

/wp-content/uploads/2014/12/16__604685.png

6. Visit the welcome page. XSEngine is up and running!

17.PNG

Want more?

Till now we’ve configured HTTP access to SYSTEMDB, DB1, DB2 and visited the welcome page successfully.

SYSTEMDB

/wp-content/uploads/2014/12/7__604566.png

DB1

11.PNG

DB2

17.PNG

From above three URLs, you can find different hostnames but the same port number. That’s how the internal web dispatcher in SAP HANA works, mapping various hostnames to various databases.

But how can we make sure there are three XS servers, not just one XS server? ๐Ÿ˜• Let’s use Web IDE to confirm this. In order to use Web IDE, first we need to grant a role to the SYSTEM user in SYSTEMDB, DB1 and DB2 respectively.

/wp-content/uploads/2014/12/18__604661.png

We assume the following credentials.

<database>: <username>/<password>

SYSTEMDB: SYSTEM/Manager0

DB1: SYSTEM/Manager1

DB2: SYSTEM/Manager2

SYSTEMDB

/wp-content/uploads/2014/12/19__604662.png

I failed to login with the password Manager1 and Manager2 which means this XS server only belongs to SYSTEMDB.

22.PNG

DB1

Failed to login with the password Manager0 and Manager2 which means this XS server only belongs to DB1.

/wp-content/uploads/2014/12/20__604671.png

DB2

Failed to login with the password Manager0 and Manager1 which means this XS server only belongs to DB2.

/wp-content/uploads/2014/12/21__604672.png

Wrap-up

In this blog post, we’ve first learned some basics about multitenants database containers (MDC) including the architecture at a high level. In SAP HANA SPS09, the HTTP access to MDC is not configured/exposed by default. We need to configure them manually. Thus besides SYSTEMDB we created two tenant databases DB1 and DB2, and successfully exposed HTTP access to these containers. In addition, we also learned how to add a dedicated ‘xsengine’ service.

Hope you enjoyed reading my blog and exposing HTTP access to MDC successfully. ๐Ÿ™‚

To report this post you need to login first.

23 Comments

You must be Logged on to comment or reply to a post.

  1. Paul Aschmann

    Hello Wenjun,

     

    I have finally got my SPS09 instance up and running and after some trouble finding XS Engine on my MDC found your post. Thank you very much – the blog is well written and provides a great overview of the new capabilities and fundamentals without having to dig too much into the documentation.

     

    Cheers, Paul

    (0) 
    1. Wenjun Zhou Post author

      Hi Paul,

       

      Thank you for reading my blog. Yeah, it’s the purpose of writing this blog. I’d like to share my experience with others using some of my thoughts and vivid example&window dumps. I think people can understand it better than just reading the plain-text document. I’m glad you liked it.

       

      Best regards,

      Wenjun

      (0) 
  2. Nicholas Chang

    Hi Wenjun,

     

    Nice blog and thanks!

     

    Just for sharing:

     

    However, above only apply to new installation but not conversion from single database to MDC.

     

    In our case, after conversion, xsengine is still visible in Tenant Database (this is correct as per the admin guide) with SID = TST ; existing port no = 30507

     

     

     

    Logically, the http port for tenant DB should either 30503 + 2 = 30505 OR 30507 itself. Unfortunately, i’ve configured and tried both port 30505 and 30507 to access xsengine but both are not working.

     

    Finally , found out that the correct port is 30508 in order to access xsengine for TST tenant DB which is kinda weird.

     

    SID=TST,EXTSRV=http://localhost:3$(SAPSYSTEM)08,SRCVHOST=*********

     

    Just wonder is this normal or do you have the same for converted MDC system?

     

    Thanks,

    Nicholas Chang

    (0) 
    1. Wenjun Zhou Post author

      Hi Nicholas,

       

      Thanks for sharing your conversion experience. I have not tried it yet. I’ll give you update later.

       

      Best regards,

      Wenjun

      (0) 
      1. Mauricio Ramรญrez Cuevas

        Hello Gentlemen,

         

        I have a similar case, I’ve recently converted to MDC,  after that  I can still see the xsengine service running for the existing database.

         

        HANA-08-07-2015_02.49.17 p.m..png

        After applying the procedure to configure HTTP access, and creating a new one db the parameters were changed to:

        HANA-08-07-2015_02.51.27 p.m..png

         

        I used the port 08  as is mentioned in the guide for my first tenant db, however I’m not able to get access to xs welcome page for that database.

         

        systemdb.customerdomain.com:8000 — it works

        scm.customerdomain.com:8000   — does not work

        hs1.customerdomain.com:8000    — it works

         

        webdispatcher trace shows :

         

        [Thr 139907953792768] *** WARNING => Connection request to localhost:30008 failed (NIECONN_REFUSED)

        [Thr 139907953792768] *** ERROR => no valid HTTP destination server available for system ‘SCM’ rc=7 {00030090} [http_route.c 3674]

        [Thr 139907953792768] *** WARNING => Connection request to localhost:30008 failed (NIECONN_REFUSED)

         

        Do you have any recomendations?

        Thank you

        (0) 
        1. Mauricio Ramรญrez Cuevas

          It looks like this is a known issue:

           

          SAP Note 2132353 – 503 Service not available for XS Engine after conversion to multi-tenant database container system

           

          I’ll aply the WA.

          Regards

          (0) 
  3. Robert Meyer

    Hi Wenjun,

     

    great tutorial and explanations, saved us a lot of headache today :-). Unfortunately we’re still stuck at assigning the “sap.hana.ide.roles::Developer” role to the SYSTEM user in our tenant databases. It simply won’t show up in the “Select Roles” dialogue

     

    /wp-content/uploads/2015/01/select_roles_in_tenant_635379.png

     

    We did not modify the SYSTEM user created with the tenant. Furthermore, when I’m trying to login to the Developer IDE in the tenant’s (non-embedded) xsengine, the browser just darkens the screen (as if he’s trying to check the passwords) and then hangs there forever.

     

    Any idea? ๐Ÿ™ Maybe it’s a DNS issue as we haven’t registered the hostname of the tenant (just in the hosts file as you did)?

    (0) 
  4. Angad Singh

    Thanks for sharing.

     

    We have similar set-up with multi-tenancy configured. We can get to XS enginee of each database. However, when we trying a run Fiori analytical app (configured on SAP Gateway with SAP Web dispatcher) it throws an error

     

    “system not found”

     

    I have also created a discussion here http://scn.sap.com/message/15874258

     

    Cheers

    Angad

    (0) 
  5. Sergio Torres

    Hello,

     

    I’m following the sap.help Configure HTTP Access to Multitenant Database Containers and I can’t see under xsengine.ini file the Public_url Section and add the Http_url for each Tenant…

     

    Any suggestion?

     

    Thanks a lot.

    (0) 
  6. Amed Torrejon Melendez

    Hello Dear,

     

    I want to Configure HTTP(S) Access to Multitenant Database Container , but when I go to confuration I can’t find the webdistpacher.ini file , do you know how i can to configurate this  file manually.?

     

    Many thanks.

     

    Arnao

    (0) 
    1. Williams Ruter

      Hello Annao,

      Which revision are you on ? because you setup this configure directly at the webdispatcher layer form the “systemdb”

       

      Williams

      (0) 
    1. Williams Ruter

      Hey Martin,

      use the following SQL command from the system database to access your tenant database over the web:

       

      ALTER SYSTEM ALTER CONFIGURATION (‘xsengine.ini’, ‘database’, ‘<tenant_DB_name>’) SET (‘public_urls’, ‘http_url’) = ‘http://<virtual_hostname>:80<instance>’ WITH RECONFIGURE;

       

      Keep in mind that you will have to call your tenant db only by the virtual hostname define in your SQL statement.

       

      Williams

      (0) 
      1. Darren Martin

        Actually, what I had was fine.  But what I did mess up was somehow 127.0.0.1 got deleted from the hosts file…strange because I added new entries via yast.

         

        Anyway it is working

        (0) 
  7. ruben torres

    Hello,

     

    I’ve followed the steps and It always connect with the xsengine of systemdb. I’ve configured the http port for each tenant but always is the systemdb database.

     

    How can I check?

     

    Revision is 112

     

     

    /wp-content/uploads/2016/07/saphana1_992718.png

    And the database is systemdb…

     

    /wp-content/uploads/2016/07/saphana_992719.png

    (0) 
      1. ruben torres

        Thanks a lot Ruter,

         

        It was configured in 96 revision after that I updated to 112 and it doesn’t work.

         

        Now It’s working perfectly.

        (0) 
  8. Vishal Bagherwal

    Thanks Wenjun, any plans to write about new tenant DB with XS advance, what changed from communication perspective? What if I dont want to installa XS advance?

    (0) 

Leave a Reply