You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@stratos.apache.org by Vishanth Balasubramaniam <vi...@wso2.com> on 2014/10/16 04:36:52 UTC

Problem starting cassandra from a Entrypoint script

Hi,

There is a problem with starting the cassandra from the Entrypoint at the
docker file. BUT it totally works fine when I run the script
(run_scripts.sh) inside the instance (ssh root@10.11.12.2).

The following line is used in the docker file to call the run script at
Entrypoint

ENTRYPOINT /usr/local/bin/run_scripts.sh | /usr/sbin/sshd -D


run_scripts.sh has the following lines of code to execute

#!/bin/bash
source /root/.bashrc
/usr/local/bin/metadata_svc_bugfix.sh
/etc/init.d/apache2 start > /tmp/apache_start.log
/root/bin/init.sh > /tmp/init.log &
opt/cassandra/bin/start.sh > /tmp/cassandra_start.log &


from the run script I am calling the start.sh to start the cassandra,
run_script contains the following

#setting up the env variables
export JAVA_HOME=/opt/java
export CASSANDRA_HOME=/opt/cassandra
export PATH=$PATH:/opt/cassandra/bin:/opt/java/bin
export CASSANDRA_CONF=/opt/cassandra/conf
export CLASSPATH=/opt/cassandra/lib/*.jar

echo "127.0.0.1 localhost" >> /etc/hosts
/opt/cassandra/bin/cassandra


The cassandra didn't start at the Entrypoint, then I logged the error into
a file using the following line
/opt/cassandra/bin/cassandra >> /tmp/cassandra_start.log 2>&1

Error: Exception thrown by the agent : java.net.MalformedURLException:
Local host name unknown: java.net.UnknownHostException:
instance-00000001: instance-00000001

Then found the fix from the following discussion
http://stackoverflow.com/questions/7496640/problem-on-starting-cassandra

and modified the script replacing  echo "127.0.0.1 localhost" >> /etc/hosts
with
echo "127.0.0.1 localhost.localdomain localhost instance-00000001" >>
/etc/hosts

But unfortunately I am not able to append the 'hosts' file in etc because
it is a read only file.

Why is it that it is able to start cassandra inside the instance using the
same script but not from calling the script at entrypoint?

Herewith I have attached all the Dockerfile, Run_scripts.sh and Start.sh.


Thank you
-- 
*Vishanth Balasubramaniam*
Software Engineer
WSO2 Inc.; http://wso2.com
lean.enterprise.middleware

mobile: *+94771737718*
about me: *http://about.me/vishanth <http://about.me/vishanth>*

Re: Problem starting cassandra from a Entrypoint script

Posted by Vishanth Balasubramaniam <vi...@wso2.com>.
Hi Udara,

Tried to wait till it pings the hostname from the script before starting
the cassandra with the following line and identified that the hostname is
not getting resolved.

while ! ping -c1 $(hostname) &>>/tmp/hostname.log; do echo "IP is not UP"
>> /tmp/hostname.log  ; sleep 5  ; done

And there is no option of appending the hostname into the '/etc/hosts' as
it is not supported to the docker container.

On Thu, Oct 16, 2014 at 10:10 AM, Udara Liyanage <ud...@wso2.com> wrote:

> Hi Vishanth,
>
> When you ssh into the instance and execute the run script, it works and
> when add as a entry point it does not means there may a difference between
> the users who execute the script. When you ssh and execute, you execute as
> root users.
> @Sajith what is the user who execute the script when you add as an entry
> point.
>
> On Thu, Oct 16, 2014 at 8:06 AM, Vishanth Balasubramaniam <
> vishanthb@wso2.com> wrote:
>
>> Hi,
>>
>> There is a problem with starting the cassandra from the Entrypoint at the
>> docker file. BUT it totally works fine when I run the script
>> (run_scripts.sh) inside the instance (ssh root@10.11.12.2).
>>
>> The following line is used in the docker file to call the run script at
>> Entrypoint
>>
>> ENTRYPOINT /usr/local/bin/run_scripts.sh | /usr/sbin/sshd -D
>>
>>
>> run_scripts.sh has the following lines of code to execute
>>
>> #!/bin/bash
>> source /root/.bashrc
>> /usr/local/bin/metadata_svc_bugfix.sh
>> /etc/init.d/apache2 start > /tmp/apache_start.log
>> /root/bin/init.sh > /tmp/init.log &
>> opt/cassandra/bin/start.sh > /tmp/cassandra_start.log &
>>
>>
>> from the run script I am calling the start.sh to start the cassandra,
>> run_script contains the following
>>
>> #setting up the env variables
>> export JAVA_HOME=/opt/java
>> export CASSANDRA_HOME=/opt/cassandra
>> export PATH=$PATH:/opt/cassandra/bin:/opt/java/bin
>> export CASSANDRA_CONF=/opt/cassandra/conf
>> export CLASSPATH=/opt/cassandra/lib/*.jar
>>
>> echo "127.0.0.1 localhost" >> /etc/hosts
>> /opt/cassandra/bin/cassandra
>>
>>
>> The cassandra didn't start at the Entrypoint, then I logged the error
>> into a file using the following line
>> /opt/cassandra/bin/cassandra >> /tmp/cassandra_start.log 2>&1
>>
>> Error: Exception thrown by the agent : java.net.MalformedURLException:
>> Local host name unknown: java.net.UnknownHostException:
>> instance-00000001: instance-00000001
>>
>> Then found the fix from the following discussion
>> http://stackoverflow.com/questions/7496640/problem-on-starting-cassandra
>>
>> and modified the script replacing  echo "127.0.0.1 localhost" >>
>> /etc/hosts with
>> echo "127.0.0.1 localhost.localdomain localhost instance-00000001" >>
>> /etc/hosts
>>
>> But unfortunately I am not able to append the 'hosts' file in etc because
>> it is a read only file.
>>
>> Why is it that it is able to start cassandra inside the instance using
>> the same script but not from calling the script at entrypoint?
>>
>> Herewith I have attached all the Dockerfile, Run_scripts.sh and Start.sh.
>>
>>
>> Thank you
>> --
>> *Vishanth Balasubramaniam*
>> Software Engineer
>> WSO2 Inc.; http://wso2.com
>> lean.enterprise.middleware
>>
>> mobile: *+94771737718*
>> about me: *http://about.me/vishanth <http://about.me/vishanth>*
>>
>>
>
>
> --
>
> Udara Liyanage
> Software Engineer
> WSO2, Inc.: http://wso2.com
> lean. enterprise. middleware
>
> web: http://udaraliyanage.wordpress.com
> phone: +94 71 443 6897
>



-- 
*Vishanth Balasubramaniam*
Software Engineer
WSO2 Inc.; http://wso2.com
lean.enterprise.middleware

mobile: *+94771737718*
about me: *http://about.me/vishanth <http://about.me/vishanth>*

Re: Problem starting cassandra from a Entrypoint script

Posted by Udara Liyanage <ud...@wso2.com>.
Hi Vishanth,

When you ssh into the instance and execute the run script, it works and
when add as a entry point it does not means there may a difference between
the users who execute the script. When you ssh and execute, you execute as
root users.
@Sajith what is the user who execute the script when you add as an entry
point.

On Thu, Oct 16, 2014 at 8:06 AM, Vishanth Balasubramaniam <
vishanthb@wso2.com> wrote:

> Hi,
>
> There is a problem with starting the cassandra from the Entrypoint at the
> docker file. BUT it totally works fine when I run the script
> (run_scripts.sh) inside the instance (ssh root@10.11.12.2).
>
> The following line is used in the docker file to call the run script at
> Entrypoint
>
> ENTRYPOINT /usr/local/bin/run_scripts.sh | /usr/sbin/sshd -D
>
>
> run_scripts.sh has the following lines of code to execute
>
> #!/bin/bash
> source /root/.bashrc
> /usr/local/bin/metadata_svc_bugfix.sh
> /etc/init.d/apache2 start > /tmp/apache_start.log
> /root/bin/init.sh > /tmp/init.log &
> opt/cassandra/bin/start.sh > /tmp/cassandra_start.log &
>
>
> from the run script I am calling the start.sh to start the cassandra,
> run_script contains the following
>
> #setting up the env variables
> export JAVA_HOME=/opt/java
> export CASSANDRA_HOME=/opt/cassandra
> export PATH=$PATH:/opt/cassandra/bin:/opt/java/bin
> export CASSANDRA_CONF=/opt/cassandra/conf
> export CLASSPATH=/opt/cassandra/lib/*.jar
>
> echo "127.0.0.1 localhost" >> /etc/hosts
> /opt/cassandra/bin/cassandra
>
>
> The cassandra didn't start at the Entrypoint, then I logged the error into
> a file using the following line
> /opt/cassandra/bin/cassandra >> /tmp/cassandra_start.log 2>&1
>
> Error: Exception thrown by the agent : java.net.MalformedURLException:
> Local host name unknown: java.net.UnknownHostException:
> instance-00000001: instance-00000001
>
> Then found the fix from the following discussion
> http://stackoverflow.com/questions/7496640/problem-on-starting-cassandra
>
> and modified the script replacing  echo "127.0.0.1 localhost" >>
> /etc/hosts with
> echo "127.0.0.1 localhost.localdomain localhost instance-00000001" >>
> /etc/hosts
>
> But unfortunately I am not able to append the 'hosts' file in etc because
> it is a read only file.
>
> Why is it that it is able to start cassandra inside the instance using the
> same script but not from calling the script at entrypoint?
>
> Herewith I have attached all the Dockerfile, Run_scripts.sh and Start.sh.
>
>
> Thank you
> --
> *Vishanth Balasubramaniam*
> Software Engineer
> WSO2 Inc.; http://wso2.com
> lean.enterprise.middleware
>
> mobile: *+94771737718*
> about me: *http://about.me/vishanth <http://about.me/vishanth>*
>
>


-- 

Udara Liyanage
Software Engineer
WSO2, Inc.: http://wso2.com
lean. enterprise. middleware

web: http://udaraliyanage.wordpress.com
phone: +94 71 443 6897

Re: Problem starting cassandra from a Entrypoint script

Posted by Sajith Kariyawasam <sa...@wso2.com>.
On Thu, Oct 16, 2014 at 8:06 AM, Vishanth Balasubramaniam <
vishanthb@wso2.com> wrote:

> Hi,
>
> There is a problem with starting the cassandra from the Entrypoint at the
> docker file. BUT it totally works fine when I run the script
> (run_scripts.sh) inside the instance (ssh root@10.11.12.2).
>
> The following line is used in the docker file to call the run script at
> Entrypoint
>
> ENTRYPOINT /usr/local/bin/run_scripts.sh | /usr/sbin/sshd -D
>
>
> run_scripts.sh has the following lines of code to execute
>
> #!/bin/bash
> source /root/.bashrc
> /usr/local/bin/metadata_svc_bugfix.sh
> /etc/init.d/apache2 start > /tmp/apache_start.log
> /root/bin/init.sh > /tmp/init.log &
> opt/cassandra/bin/start.sh > /tmp/cassandra_start.log &
>
>
> from the run script I am calling the start.sh to start the cassandra,
> run_script contains the following
>
> #setting up the env variables
> export JAVA_HOME=/opt/java
> export CASSANDRA_HOME=/opt/cassandra
> export PATH=$PATH:/opt/cassandra/bin:/opt/java/bin
> export CASSANDRA_CONF=/opt/cassandra/conf
> export CLASSPATH=/opt/cassandra/lib/*.jar
>
> echo "127.0.0.1 localhost" >> /etc/hosts
> /opt/cassandra/bin/cassandra
>
>
> The cassandra didn't start at the Entrypoint, then I logged the error into
> a file using the following line
> /opt/cassandra/bin/cassandra >> /tmp/cassandra_start.log 2>&1
>
> Error: Exception thrown by the agent : java.net.MalformedURLException:
> Local host name unknown: java.net.UnknownHostException:
> instance-00000001: instance-00000001
>
> Then found the fix from the following discussion
> http://stackoverflow.com/questions/7496640/problem-on-starting-cassandra
>
> and modified the script replacing  echo "127.0.0.1 localhost" >>
> /etc/hosts with
> echo "127.0.0.1 localhost.localdomain localhost instance-00000001" >>
> /etc/hosts
>
> But unfortunately I am not able to append the 'hosts' file in etc because
> it is a read only file.
>
>
FYI,  with docker 1.2.0 they have made /etc/hosts file editable
https://github.com/docker/docker/blob/master/CHANGELOG.md#120-2014-08-20



> Why is it that it is able to start cassandra inside the instance using the
> same script but not from calling the script at entrypoint?
>
> Herewith I have attached all the Dockerfile, Run_scripts.sh and Start.sh.
>
>
> Thank you
> --
> *Vishanth Balasubramaniam*
> Software Engineer
> WSO2 Inc.; http://wso2.com
> lean.enterprise.middleware
>
> mobile: *+94771737718*
> about me: *http://about.me/vishanth <http://about.me/vishanth>*
>
>


-- 
*Sajith Kariyawasam*


*Committer and PMC member, Apache Stratos,WSO2 Inc., http://wso2.com
<http://wso2.com>AMIE (SL)Mobile: +94772269575*