Дипломная работа студента 5 курса
Вид материала | Диплом |
- Дипломная работа студента 5 курса, 2911.84kb.
- Дипломная работа студента, 93.71kb.
- Дипломная работа студента, 1858.08kb.
- Дипломная работа студента 544 группы, 632.07kb.
- Дипломная работа студента 545 группы, 514.7kb.
- Требования к курсовой и выпускной квалификационной (дипломной) работе по специализации, 180.91kb.
- Дипломная работа по истории, 400.74kb.
- Методические указания по выполнению выпускных квалификационных (дипломных), 2098.87kb.
- Дипломная работа мгоу 2001 Арапов, 688.73kb.
- Курсовая работа студента 3 курса стационара, 9.34kb.
3 Система удалённого доступа для вычислительных кластерных систем
Система удалённого доступа реализована для кластера состоящего из компьютеров учебного класса на основе процессоров Intel Pentium и стоящей на них ОС Windows.
3.1Установка и настройка пакета MPICH
Пакет MPICH[5] существует в двух вариантах: для ОС Linux и для ОС Windows. Мы остановим свой выбор на пакете для ОС Windows т.к. кластер стоит под управлением этой системы.
Разархивируем содержимое инсталляционного файла в локальную папку C:\Apps\mpich. После этого следует прописать пути к программам и подключаемым файлам для всех пользователей кластера, либо для системы в целом.
Необходимо добавить пути (path) к подключаемым файлам и программам библиотеки MPICH в переменные path, include и lib. Для нашего примера пути описаны в таблице 3.1.
Таблица 3.1.
Пути к подключаемым файлам
-
include
C:\Apps\Microsoft Visual Studio\VC98\atl\include;
C:\Apps\Microsoft Visual Studio\VC98\mfc\include;
C:\Apps\Microsoft Visual Studio\VC98\include;
C:\Apps\mpich\include;C:\Apps\mpich\mpe\include
lib
C:\Apps\Microsoft Visual Studio\VC98\mfc\lib;
C:\Apps\Microsoft Visual Studio\VC98\lib;
C:\Apps\mpich\lib
path
%SystemRoot%\system32;
%SystemRoot%;
%SystemRoot%\System32\Wbem;
C:\Apps\mpich\bin;
C:\Apps\mpich\lib;
C:\Apps\Microsoft Visual Studio\VC98\Bin;
C:\Apps\Microsoft Visual Studio\Common\Tools;
C:\Apps\Microsoft Visual Studio\Common\MSDev98\Bin;
C:\Apps\Microsoft Visual Studio\Common\Tools\WinNT
Обратим внимание, что у MPICH в переменную path попадают 2 папки: bin и lib, так как в lib содержится библиотека mpich.dll, необходимая для работы MPICH программ.
Далее необходимо установить mpd (multi-purpose daemon) в качестве системного сервиса, вызвав из папки C:\Apps\mpich\bin команду
mpd -install -interact
Для получения списка машин, которые будут использоваться для запуска MPI программ, нужно сконфигурировать mpd, вызвав его с опцией –console:
mpd -console
либо с помощью программы mpiconfig без параметров:
mpiconfig.
При вызове этой программы появляется окно, выбрав кнопку “Select” и в появившемся диалоге режим “Action/Scan hosts”, можно получить список доступных машин кластера, затем установить этот список в переменную “hosts” в mpd (“Apply all”).
Для установки пользователя, с правами которого запускаются MPI программы, существует команда
mpiregister
без параметров. Она запросит имя и пароль пользователя, затем запросит подтверждение на внесение данных. Данные с настройками mpd хранятся в реестре Windows в ключе HKEY_LOCAL_ MACHINE\ SOFTWARE\MPICH\MPD, т.е. едины для всех пользователей данной машины, в отличие от данных о пользователе, которые сохраняются в ключе реестра HKEY_CURRENT_USER\Software\MPICH и, следовательно, для каждого пользователя свои. Теперь, перезагрузив OC Windows, можно проверить правильность установки MPICH, запустив примеры.
3.2Описание системы удалённого управления вычислительным кластером
Для реализации системы был выбран путь подключения к кластеру через Internet посредством web-браузера. Для этого система разделялась на две части: 1 – клиентская часть (web-сайт для работы с конечным пользователем), 2 – серверная часть (сервис, отвечающий за выполнение задач на кластере).
3.2.1 Клиентская часть
Для разработки клиентской части были использованы такие технологии как: ASP.Net[6], Microsoft .Net Framework 1.1, MySQL Server[7]. ASP.Net и Microsoft .Net Framework 1.1 были применены в написании сайта, а MySQL для хранения данных о пользователе и задачах поставленных им.
На сайте реализованы автоматическая регистрация, безопасность соединения для пользователя, страницы для управления кластером и удалённого администрирования кластера.
Безопасность соединения осуществляется посредством аутентификации, т.е. ввода Имени пользователя и Пароля (рис. 7). Для того чтобы пользователь не мог сразу зайти на страницу управления кластером, было использовано переменные Session и написан объект SessionSequencer, контролирующий положение пользователя на сайте:
Imports System.Web
Public Class SessionSequencer
Private expectedPage As String
Private requestedPage As String
Private sequenceIndex As Integer
Private sequence() As String = {"login.aspx", "general.aspx"}
Private Request As HttpRequest
Private Response As HttpResponse
Private Session As SessionState.HttpSessionState
Public Sub New()
Request = HttpContext.Current.Request
Response = HttpContext.Current.Response
Session = HttpContext.Current.Session
If Session("sequenceIndex") Is Nothing Then
Session("sequenceIndex") = 0
End If
sequenceIndex = Session("sequenceIndex")
requestedPage = Request.ServerVariables("SCRIPT_NAME").ToLower
requestedPage = requestedPage.Substring(requestedPage.LastIndexOf("/") + 1)
If sequenceIndex < 0 Or sequenceIndex > sequence.GetUpperBound(0) Then
sequenceIndex = 0
End If
expectedPage = sequence(sequenceIndex)
If requestedPage <> expectedPage Then
Response.Redirect(expectedPage)
End If
End Sub
Public Sub showSessionVars()
Dim aKey As String
For Each aKey In Session.Keys
Response.Write(aKey & "=" & Session.Item(aKey) & "
")
Next
End Sub
Public Sub NextPage()
If sequenceIndex + 1 < sequence.GetLength(0) Then
sequenceIndex += 1
Else
sequenceIndex = sequence(sequence.GetUpperBound(0))
End If
Session("sequenceIndex") = sequenceIndex
Session("sequence") = sequence(sequenceIndex)
Response.Redirect(sequence(sequenceIndex))
End Sub
End Class

Рис. 7 Вид страницы Аутентификации.
Регистрация пользователя (Рис. 8) доступна автоматически и данные сохраняются в базе данных MySQL:

Рис. 8 Страница Регистрации пользователя.
Главная страница удалённого управления кластером (Рис. 9) позволяет: просматривать содержимое личной папки пользователя на сервере; скачивать, удалять и закачивать файлы на сервер; компилировать файлы и ставить их в очередь на выполнение.

Рис. 9 Страница Удалённого управления кластером.
Удаление файлов:
Dim fi As FileInfo
fi = New FileInfo("c:\inetpub\wwwroot\cluster\usersdirectory\" & Session("directory") & "\" & Session("selectfile"))
If fi.Exists Then
fi.Delete()
End If
Response.Redirect("general.aspx")
Закачка файлов на сервер:
Dim filename As String = File1.PostedFile.FileName.Remove(0, File1.PostedFile.FileName.LastIndexOf("\") + 1)
If File1.PostedFile.ContentLength > 1048576 Or File1.PostedFile.FileName = "" Then
Label3.Text = "Файл не закачан: или файл больше положенного размера или введён неправильный путь."
Response.Redirect("general.aspx")
Else : File1.PostedFile.SaveAs("C:\Inetpub\wwwroot\cluster\usersdirectory\" & Session("directory") & "\" & filename)
Label3.Text = "Файл успешно закачан."
'ListBox1.Items.Clear()
Response.Redirect("general.aspx")
End If
Компилирование файлов:
If Me.TextBox1.Text = "" Then
Label1.Text = ""
Response.Redirect("general.aspx")
Else
Dim clfile As String = Session("compilefile")
Dim str As String = clfile & " mpich2.lib"
Dim _pi As New ProcessStartInfo("cl", str)
_pi.UseShellExecute = False
_pi.RedirectStandardInput = True
_pi.RedirectStandardOutput = True
_pi.WorkingDirectory = "C:\Inetpub\wwwroot\cluster\usersdirectory\" & Session("directory") & "\"
Dim _pr As Process = Process.Start(_pi)
Label1.Text = ""
Response.Redirect("general.aspx")
End If
Постановка файлов на выполнение:
Session("comp") = DropDownList1.SelectedValue
Session("process") = TextBox3.Text
Session("parametrs") = TextBox5.Text
Session("time") = TextBox4.Text
Session("email") = CheckBox1.Checked
If TextBox2.Text = "" Then
Label1.Text = ""
Response.Redirect("general.aspx")
Else
Dim myConnectionString As String = "Database=information;Data Source=localhost;User Id=tol;Password=tol"
Dim myConnection As New MySqlConnection(myConnectionString)
Dim myInsertQuery As String = "INSERT INTO files (comp, process, directory, filename, parametrs, queue, time, email) Values(" & Session("comp") & "," & Session("process") & ",'" & Session("directory") & "','" & Session("runfile") & "','" & Session("parametrs") & "'," & 0 & "," & Session("time") & "," & Session("email") & ")"
Dim myCommand As New MySqlCommand(myInsertQuery)
myCommand.Connection = myConnection
myConnection.Open()
myCommand.ExecuteNonQuery()
myCommand.Connection.Close()
Response.Redirect("general.aspx")
End If
На странице удалённого администрирования (Рис. 10) расположены элементы просмотра содержимого личной папки; скачивания, удаления и закачки файлов на сервер; управление кластером через командную строку, а так же состояние работы кластера.

Рис. 10 Страница Администрирования кластера.
Управление кластера через командную строку:
If TextBox1.Text = "" Then
Label1.Text = ""
Response.Redirect("admin.aspx")
Else
Dim _pi As New ProcessStartInfo(TextBox1.Text, TextBox2.Text)
_pi.UseShellExecute = False
_pi.RedirectStandardInput = True
_pi.RedirectStandardOutput = True
_pi.WorkingDirectory = "C:\Inetpub\wwwroot\cluster\usersdirectory\" & Session("directory") & "\"
Dim _pr As Process = Process.Start(_pi)
Label1.Text = ""
Response.Redirect("admin.aspx")
End If
Состояние кластера:
Dim SessionSequencer As New SessionSequencer3
Dim DirStr As String = Session("directory")
'ListBox1.Items.Clear()
Dim di As New DirectoryInfo(Server.MapPath(".") & "\usersdirectory\" & DirStr)
Dim fi As FileInfo
For Each fi In di.GetFiles
Me.ListBox1.Items.Add(fi.Name)
Next
Dim mySelectQuery As String = "SELECT * FROM files"
Dim mySelectQuery2 As String = "SELECT * FROM computers"
Dim myConnection As New MySqlConnection("Database=information;Data Source=localhost;User Id=tol;Password=tol")
Dim myCommand As New MySqlCommand(mySelectQuery, myConnection)
Dim myCommand2 As New MySqlCommand(mySelectQuery2, myConnection)
myConnection.Open()
Dim myReader As MySqlDataReader
myReader = myCommand.ExecuteReader()
DataGrid1.DataSource = myReader
DataGrid1.DataBind()
myReader.Close()
Dim myReader2 As MySqlDataReader
myReader2 = myCommand2.ExecuteReader()
DataGrid2.DataSource = myReader2
DataGrid2.DataBind()
myReader2.Close()
myConnection.Close()